??????????????????????????????????????????????Щ????????? ??????????£???????????????????м???????ū?????????????????????????????????????????????????????????????£?????????????PHP?е???????????
???????????????????
??????????м??????(??????????)
???????????????????????????????????????????????????仯??????????????????????
????MD5
????string md5 ( string $str [?? bool $raw_output = false ] ); //MD5?????????????????????????????32λ???
????md5()???????????????????????????????????Щ??????????????????????????????????;?????????????????????鷳?Щ????????????????????(salt)?????MD5;
????md5(md5($password).'sdva');
????sdva???????????????????????????md5??????????????????????????????????????????????????????????????????????????;
????Crypt
???????????????????????????????????п?????????????????????棬????????;
????string crypt ( string $str [?? string $salt ] ) //????????????????????????????????????????????????????????????PHP????????????????к???????????????? 13 ??????????????????????????
????<?php
????$password='testtest.com';
????echo crypt($password);
????//???:$1$DZ3.QX2.$CQZ8I.OfeepKYrWp0oG8L1
????/*?????$???????$?????????????PHP????????????α????
????*/
????echo "<hr>";
????echo crypt($password??"testtest");
????//?????tesGeyALKYm3A
????//????????????????????????????е?testtest?????????????????? ??????λ???????????λ
????echo "<hr>";
????echo  crypt($password??'$1$testtest$');
????//?????$1$testtest$DsiRAWGTHiVH3O0HSHGoL1
????/*crypt????????ж????????????????????????????MD5????????????÷????
?????????$1$$????????????????е?testtest?????????$?????
??????????λ???????????λ??????12λ;crypt??????????????
????*/
????echo "<hr>";
????//crypt???ж????????????????????
????Sha1?????
????string sha1 ( string $str [?? bool $raw_output = false ]); //??md5???????????sha1()???????·???40?????????????????????????????????????????????????????raw_output????????????false??????????true??sha1()?????????20 λ???????????
????<?php
????$my_intro="zhouxiaogang";
????echo sha1($my_intro); // b6773e8c180c693d9f875bcf77c1202a243e8594
????echo "<hr>";
????//?????????????????????????
????echo md5(sha1($my_intro));
????//?????54818bd624d69ac9a139bf92251e381d
????//???????????????????????????????
???????????
????????????????????????????м???????????????????????????public key???????????????????private key?????????;


?????????????????????÷????????????????????????????
?????????????????????????????????????????????????
????????ù????????????????????????м???????????????
?????????????????????????????????????????????????н?????????????????????????????????????????????????
?????????????У???????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????
????????????????????????У?RSA??Elgamal??????????Rabin??D-H??ECC??????????????????? ???????????????RSA??
???????????????????????PHP???openssl????????????
????<?php
????/**
????* ???openssl?????????
????* @since 2010-07-08
????*/
????class Rsa {
????/**
????* private key
????*/
????private $_privKey;
????/**
????* public key
????*/
????private $_pubKey;
????/**
????* the keys saving path
????*/
????private $_keyPath;
????/**
????* the construtor??the param $path is the keys saving path
????*/
????public function __construct($path) {
????if (empty($path) || !is_dir($path)) {
????throw new Exception('Must set the keys save path');
????}
????$this->_keyPath = $path;
????}
????/**
????* create the key pair??save the key to $this->_keyPath
????*/
????public function createKey() {
????$r = openssl_pkey_new();
????openssl_pkey_export($r?? $privKey);
????file_put_contents($this->_keyPath . DIRECTORY_SEPARATOR . 'priv.key'?? $privKey);
????$this->_privKey = openssl_pkey_get_public($privKey);
????$rp = openssl_pkey_get_details($r);
????$pubKey = $rp['key'];
????file_put_contents($this->_keyPath . DIRECTORY_SEPARATOR . 'pub.key'?? $pubKey);
????$this->_pubKey = openssl_pkey_get_public($pubKey);
????}
????/**
????* setup the private key
????*/
????public function setupPrivKey() {
????if (is_resource($this->_privKey)) {
????return true;
????}
????$file = $this->_keyPath . DIRECTORY_SEPARATOR . 'priv.key';
????$prk = file_get_contents($file);
????$this->_privKey = openssl_pkey_get_private($prk);
????return true;
????}
????/**
????* setup the public key
????*/
????public function setupPubKey() {
????if (is_resource($this->_pubKey)) {
????return true;
????}
????$file = $this->_keyPath . DIRECTORY_SEPARATOR . 'pub.key';
????$puk = file_get_contents($file);
????$this->_pubKey = openssl_pkey_get_public($puk);
????return true;
????}
????/**
????* encrypt with the private key
????*/
????public function privEncrypt($data) {
????if (!is_string($data)) {
????return null;
????}
????$this->setupPrivKey();
????$r = openssl_private_encrypt($data?? $encrypted?? $this->_privKey);
????if ($r) {
????return base64_encode($encrypted);
????}
????return null;
????}
????/**
????* decrypt with the private key
????*/
????public function privDecrypt($encrypted) {
????if (!is_string($encrypted)) {
????return null;
????}
????$this->setupPrivKey();
????$encrypted = base64_decode($encrypted);
????$r = openssl_private_decrypt($encrypted?? $decrypted?? $this->_privKey);
????if ($r) {
????return $decrypted;
????}
????return null;
????}
????/**
????* encrypt with public key
????*/
????public function pubEncrypt($data) {
????if (!is_string($data)) {
????return null;
????}
????$this->setupPubKey();
????$r = openssl_public_encrypt($data?? $encrypted?? $this->_pubKey);
????if ($r) {
????return base64_encode($encrypted);
????}
????return null;
????}
????/**
????* decrypt with the public key
????*/
????public function pubDecrypt($crypted) {
????if (!is_string($crypted)) {
????return null;
????}
????$this->setupPubKey();
????$crypted = base64_decode($crypted);
????$r = openssl_public_decrypt($crypted?? $decrypted?? $this->_pubKey);
????if ($r) {
????return $decrypted;
????}
????return null;
????}
????public function __destruct() {
????@fclose($this->_privKey);
????@fclose($this->_pubKey);
????}
????}