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程序设计有所帮助。