PHP的AES加密算法完整实例
本文实例讲述了PHP的AES加密算法。分享给大家供大家参考,具体如下:
<?php
classMCrypt{
private$hex_iv='00000000000000000000000000000000';#convertedJAVAbytecodeintoHEXandplacedithere
private$key='U1MjU1M0FDOUZ.Qz';#SameasinJAVA
function__construct(){
$this->key=hash('sha256',$this->key,true);
//echo$this->key.'<br/>';
}
functionencrypt($str){
$td=mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_CBC,'');
mcrypt_generic_init($td,$this->key,$this->hexToStr($this->hex_iv));
$block=mcrypt_get_block_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC);
$pad=$block-(strlen($str)%$block);
$str.=str_repeat(chr($pad),$pad);
$encrypted=mcrypt_generic($td,$str);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
returnbase64_encode($encrypted);
}
functiondecrypt($code){
$td=mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_CBC,'');
mcrypt_generic_init($td,$this->key,$this->hexToStr($this->hex_iv));
$str=mdecrypt_generic($td,base64_decode($code));
$block=mcrypt_get_block_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return$this->strippadding($str);
}
/*
ForPKCS7padding
*/
privatefunctionaddpadding($string,$blocksize=16){
$len=strlen($string);
$pad=$blocksize-($len%$blocksize);
$string.=str_repeat(chr($pad),$pad);
return$string;
}
privatefunctionstrippadding($string){
$slast=ord(substr($string,-1));
$slastc=chr($slast);
$pcheck=substr($string,-$slast);
if(preg_match("/$slastc{".$slast."}/",$string)){
$string=substr($string,0,strlen($string)-$slast);
return$string;
}else{
returnfalse;
}
}
functionhexToStr($hex)
{
$string='';
for($i=0;$i<strlen($hex)-1;$i+=2)
{
$string.=chr(hexdec($hex[$i].$hex[$i+1]));
}
return$string;
}
}
$encryption=newMCrypt();
echo$encryption->encrypt('123456')."<br/>";
echo$encryption->decrypt('tpyxISJ83dqEs3uw8bN/+w==');
?>
PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:
密码安全性在线检测:
高强度密码生成器:
http://tools.jb51.net/password/CreateStrongPassword
MD5在线加密工具:
http://tools.jb51.net/password/CreateMD5Password
迅雷、快车、旋风URL加密/解密工具:
http://tools.jb51.net/password/urlrethunder
在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php加密方法总结》、《PHP编码与转码操作技巧汇总》、《php面向对象程序设计入门教程》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》、及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。