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日期时间函数的高级应用技巧
May 16 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
Jan 10 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
php函数array_merge用法一例(合并同类数组)
Feb 03 PHP
php strrpos()与strripos()函数
Aug 31 PHP
CodeIgniter生成网站sitemap地图的方法
Nov 13 PHP
WordPress中用于获取文章作者与分类信息的方法整理
Dec 17 PHP
总结PHP中数值计算的注意事项
Aug 14 PHP
php 防止表单重复提交两种实现方法
Nov 03 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
PHP接口类(interface)的定义、特点和应用示例
May 18 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简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
2016/10/08 PHP
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
关于JavaScript定义类和对象的几种方式
2010/11/09 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
javascript 实现 原路返回
2015/01/21 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
Angular ElementRef简介及其使用
2018/10/01 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
python笔记(2)
2012/10/24 Python
Python fileinput模块使用实例
2015/05/28 Python
详解python之配置日志的几种方式
2017/05/22 Python
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
python解释器安装教程的方法步骤
2020/07/02 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
css3背景图片透明叠加属性cross-fade简介及用法实例
2013/01/08 HTML / CSS
Ajxa常见问题都有哪些
2014/03/26 面试题
行政部主管岗位职责
2013/12/28 职场文书
大学生求职自我评价
2014/01/16 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
员工工作能力评语
2014/12/31 职场文书
员工考勤管理制度
2015/08/06 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书