PHP加密解密实例分析
本文实例讲述了PHP加密解密方法。分享给大家供大家参考,具体如下:
//加密 functionstring2secret($str) { $key="123"; $td=mcrypt_module_open(MCRYPT_DES,'','ecb',''); $iv=mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND); $ks=mcrypt_enc_get_key_size($td); $key=substr(md5($key),0,$ks); mcrypt_generic_init($td,$key,$iv); $secret=mcrypt_generic($td,$str); mcrypt_generic_deinit($td); mcrypt_module_close($td); return$secret; } //解密 functionsecret2string($sec) { $key="123"; $td=mcrypt_module_open(MCRYPT_DES,'','ecb',''); $iv=mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND); $ks=mcrypt_enc_get_key_size($td); $key=substr(md5($key),0,$ks); mcrypt_generic_init($td,$key,$iv); $string=mdecrypt_generic($td,$sec); mcrypt_generic_deinit($td); mcrypt_module_close($td); returntrim($string); } echosecret2string(string2secret("11111111111111111")); //显示结果是11111111111111111 echo'<br>'.string2secret("11111111111111111"); //显示乱码 echo'<br>'; //$string:要加密的字符串$isEncrypt=true:加密$isEncrypt=false:解密 functiondencrypt($string,$isEncrypt=true,$key="KEY_SPACE"){ if(!isset($string{0})||!isset($key{0})){ returnfalse; } $dynKey=$isEncrypt?hash('sha1',microtime(true)):substr($string,0,40); $fixedKey=hash('sha1',$key); $dynKeyPart1=substr($dynKey,0,20); $dynKeyPart2=substr($dynKey,20); $fixedKeyPart1=substr($fixedKey,0,20); $fixedKeyPart2=substr($fixedKey,20); $key=hash('sha1',$dynKeyPart1.$fixedKeyPart1.$dynKeyPart2.$fixedKeyPart2); $string=$isEncrypt?$fixedKeyPart1.$string.$dynKeyPart2:(isset($string{339})?gzuncompress(base64_decode(substr($string,40))):base64_decode(substr($string,40))); $n=0; $result=''; $len=strlen($string); for($n=0;$n<$len;$n++){ $result.=chr(ord($string{$n})^ord($key{$n%40})); } return$isEncrypt?$dynKey.str_replace('=','',base64_encode($n>299?gzcompress($result):$result)):substr($result,20,-20); } echostrlen(dencrypt("12345678912345"));
希望本文所述对大家PHP程序设计有所帮助。