PHP的AES加密算法完整实例

yipeiwu_com6年前PHP代码库

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

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

相关文章

解决File size limit exceeded 错误的方法

昨日遇到一个问题,使用Yii框架编写php脚本,将db中100多万的数据导出,运行,成功。 但是在 运行到第 49万条时,脚本终止,提示错误“File size limit exceed...

PHP 编程安全性小结

规则 1:绝不要信任外部数据或输入   关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据。外部数据(outside data) 包括不是由程序员在 PHP 代码中直...

php 面向对象的一个例子

复制代码 代码如下: <?php class person{ //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //...

PHP管理内存函数 memory_get_usage()使用介绍

下面是PHP memory_get_usage()使用示例: 复制代码 代码如下: echo memory_get_usage(), '<br />'; //143952 $...

php中Socket创建与监听实现方法

本文实例讲述了php中Socket创建与监听实现方法。分享给大家供大家参考。具体如下: 这里提供了在php中socket相关函数的一个实例,如创建Socket,接受一个socket连接...