PHP的AES加密算法完整实例


Posted in PHP onJuly 20, 2016

本文实例讲述了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==');
?>

PHP 相关文章推荐
php生成文件
Jan 15 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
php排序算法(冒泡排序,快速排序)
Oct 09 PHP
解析php函数method_exists()与is_callable()的区别
Jun 21 PHP
php实现可以设置中奖概率的抽奖程序代码分享
Jan 19 PHP
php中simplexml_load_string使用实例分享
Feb 13 PHP
php获取文章上一页与下一页的方法
Dec 01 PHP
PHP的伪随机数与真随机数详解
May 27 PHP
php实现购物车产品删除功能(2)
Jul 23 PHP
Laravel实现autoload方法详解
May 07 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
May 31 PHP
php写入文件不覆盖的实例讲解
Sep 17 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 #PHP
PHP简单日历实现方法
Jul 20 #PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 #PHP
PHP实现数组array转换成xml的方法
Jul 19 #PHP
smarty循环嵌套用法示例分析
Jul 19 #PHP
PHP中Socket连接及读写数据超时问题分析
Jul 19 #PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 #PHP
You might like
php 日期时间处理函数小结
2009/12/18 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
浅谈JavaScript字符集
2014/05/22 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
2017/03/08 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
粗略分析Python中的内存泄漏
2015/04/23 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
node.js获取参数的常用方法(总结)
2017/05/29 Python
Python中read()、readline()和readlines()三者间的区别和用法
2017/07/30 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
python psutil库安装教程
2018/03/19 Python
Python随机生成身份证号码及校验功能
2018/12/04 Python
利用python求积分的实例
2019/07/03 Python
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
介绍一下grep命令的使用
2015/06/12 面试题
名人演讲稿范文
2013/12/28 职场文书
八年级语文教学反思
2014/02/11 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
重阳节简报
2015/07/20 职场文书
谢师宴学生答谢词
2015/09/30 职场文书