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:风雨欲来 路在何方?
Oct 09 PHP
smtp邮件发送一例
Oct 09 PHP
phpMyAdmin 安装教程全攻略
Mar 19 PHP
PHP 编程的 5个良好习惯
Feb 20 PHP
php无限分类且支持输出树状图的详细介绍
Jun 19 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 PHP
PHP使用header()输出图片缓存实例
Dec 09 PHP
PHP使用CURL实现多线程抓取网页
Apr 30 PHP
PHP实现的DES加密解密实例代码
Apr 06 PHP
深入理解php printf() 输出格式化的字符串
May 23 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
Aug 12 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/03/23 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
vue组件学习教程
2017/09/09 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
JavaScript异步加载问题总结
2018/02/17 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
2018/05/06 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
2019/01/18 jQuery
Vue-cli3多页面配置详解
2020/03/22 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python使用chardet判断字符编码
2015/05/09 Python
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
解决python报错MemoryError的问题
2018/06/26 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
作文批改评语大全
2014/04/23 职场文书
无毒社区工作方案
2014/05/23 职场文书
减负增效提质方案
2014/05/23 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
护士工作失误检讨书
2014/09/14 职场文书
高等学院职业生涯规划书范文
2014/09/16 职场文书
个人买房协议书范本
2014/10/06 职场文书
租车协议书
2015/01/27 职场文书
英文自荐信范文
2015/03/25 职场文书
复兴之路观后感3000字
2015/06/02 职场文书
《月光曲》教学反思
2016/02/16 职场文书