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