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 相关文章推荐
收集的DedeCMS一些使用经验
Mar 17 PHP
PHP删除数组中的特定元素的代码
Jun 28 PHP
php比较多维数组中值的大小排序实现代码
Sep 08 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
Jun 20 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
Jun 26 PHP
php程序内部post数据的方法
Mar 31 PHP
PHP使用mysqli操作MySQL数据库的简单方法
Feb 04 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
Mar 25 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
May 31 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 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
DOMXML函数笔记
2006/10/09 PHP
PHP 批量删除数据的方法分析
2009/10/30 PHP
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
php 保留字列表
2012/10/04 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
推荐5款跨平台的PHP编辑器
2014/12/25 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
JS实现简单的二维矩阵乘积运算
2016/01/26 Javascript
浅谈javascript中的加减时间
2016/07/12 Javascript
浅谈在node.js进入文件目录的问题
2018/05/13 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
python中logging包的使用总结
2018/02/28 Python
分享8点超级有用的Python编程建议(推荐)
2019/10/13 Python
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
社团成立邀请函
2014/01/08 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
旺仔牛奶广告词
2014/03/20 职场文书
妇女工作先进事迹
2014/08/17 职场文书
品牌转让协议书
2014/08/20 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
居委会工作总结2015
2015/05/18 职场文书
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python