当前位置: 移动技术网 > IT编程>开发语言>PHP > PHP的AES加密算法完整实例

PHP的AES加密算法完整实例

2017年12月12日  | 移动技术网IT编程  | 我要评论

本文实例讲述了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:关于加密解密感兴趣的朋友还可以参考本站在线工具:

密码安全性在线检测:

高强度密码生成器:

md5在线加密工具:

迅雷、快车、旋风url加密/解密工具:

在线散列/哈希算法加密工具:

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

希望本文所述对大家php程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网