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学习 字符串课件
Jun 15 PHP
解析php curl_setopt 函数的相关应用及介绍
Jun 17 PHP
PHP中获取时间的下一周下个月的方法
Mar 18 PHP
php实现的双向队列类实例
Sep 24 PHP
php简单实现快速排序的方法
Apr 04 PHP
PHP附件下载中文名称乱码的解决方法
Dec 17 PHP
PHP简单获取及判断提交来源的方法
Apr 22 PHP
php+jQuery递归调用POST循环请求示例
Oct 14 PHP
php中照片旋转 (orientation) 问题的正确处理
Feb 16 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
Feb 08 PHP
Mac下关于PHP环境和扩展的安装详解
Oct 17 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 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
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
php方法调用模式与函数调用模式简例
2011/09/20 PHP
Laravel多用户认证系统示例详解
2018/03/13 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
微信JS接口大全
2016/08/25 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
anaconda如何查看并管理python环境
2019/07/05 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
应届生骨科医生求职信
2013/10/31 职场文书
三查三看党性分析材料
2014/02/18 职场文书
党的群众路线教育实践活动总结报告
2014/07/03 职场文书
岗位职责说明书模板
2014/07/30 职场文书
大学生实习证明范本
2014/09/19 职场文书
优秀党员个人总结
2015/02/14 职场文书
2019邀请函格式及范文
2019/05/20 职场文书
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL