欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP的AES加密算法完整实例

程序员文章站 2024-04-02 16:54:10
本文实例讲述了php的aes加密算法。分享给大家供大家参考,具体如下:

本文实例讲述了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/createstrongpassword

md5在线加密工具:
http://tools.jb51.net/password/createmd5password

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

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

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

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