php教程

超轻量级php框架startmvc

PHP的AES加密算法完整实例

更新时间:2020-03-10 23:16:39 作者:startmvc
本文实例讲述了PHP的AES加密算法。分享给大家供大家参考,具体如下:<?phpclassMCrypt{pri

本文实例讲述了PHP的AES加密算法。分享给大家供大家参考,具体如下:


<?php
class MCrypt {
 private $hex_iv = '00000000000000000000000000000000'; # converted JAVA byte code in to HEX and placed it here
 private $key = 'U1MjU1M0FDOUZ.Qz'; #Same as in JAVA
 function __construct() {
 $this->key = hash('sha256', $this->key, true);
 //echo $this->key.'<br/>';
 }
 function encrypt($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);
 return base64_encode($encrypted);
 }
 function decrypt($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);
 }
 /*
 For PKCS7 padding
 */
 private function addpadding($string, $blocksize = 16) {
 $len = strlen($string);
 $pad = $blocksize - ($len % $blocksize);
 $string .= str_repeat(chr($pad), $pad);
 return $string;
 }
 private function strippadding($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 {
 return false;
 }
 }
 function hexToStr($hex)
 {
 $string='';
 for ($i=0; $i < strlen($hex)-1; $i+=2)
 {
 $string .= chr(hexdec($hex[$i].$hex[$i+1]));
 }
 return $string;
 }
}
$encryption = new MCrypt();
echo $encryption->encrypt('123456') . "<br/>";
echo $encryption->decrypt('tpyxISJ83dqEs3uw8bN/+w==');
?>

PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:

密码安全性在线检测: http://tools.jb51.net/password/my_password_safe

高强度密码生成器: 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 AES 加密算法