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日历程序
Dec 06 PHP
php 图片上添加透明度渐变的效果
Jun 29 PHP
php递归实现无限分类生成下拉列表的函数
Aug 08 PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
Jun 12 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
Oct 16 PHP
WordPress中缩略图的使用以及相关技巧
Nov 24 PHP
php中实现字符串翻转的方法
Feb 22 PHP
实例讲解php实现多线程
Jan 27 PHP
php和nginx交互实例讲解
Sep 24 PHP
phpquery中文手册
Mar 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 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
javascript JSON操作入门实例
2010/04/16 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
详解从NodeJS搭建中间层再谈前后端分离
2018/11/13 NodeJs
vue-cli系列之vue-cli-service整体架构浅析
2019/01/14 Javascript
原生JS生成指定位数的验证码
2020/10/28 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
Django开发中的日志输出的方法
2018/07/02 Python
python 导入数据及作图的实现
2019/12/03 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
康帕斯酒店预订:Compass Hospitality(支持中文)
2018/08/23 全球购物
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
后勤主管岗位职责
2014/03/01 职场文书
校园绿化美化方案
2014/06/08 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书