首页 > 开发 > PHP > 正文

PHP的AES加密算法完整实例

2024-05-04 22:29:10
字体:
来源:转载
供稿:网友

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

<?phpclass 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.Vevb.com/password/my_password_safe

高强度密码生成器:
http://tools.Vevb.com/password/CreateStrongPassword

MD5在线加密工具:
http://tools.Vevb.com/password/CreateMD5Password

迅雷、快车、旋风URL加密/解密工具:
http://tools.Vevb.com/password/urlrethunder

在线散列/哈希算法加密工具:
http://tools.Vevb.com/password/hash_encrypt

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php加密方法总结》、《PHP编码与转码操作技巧汇总》、《php面向对象程序设计入门教程》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》、及《php常见数据库操作技巧汇总》

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表