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
关于文本留言本的分页代码
Oct 09 PHP
PHP小程序自动提交到自助友情连接
Nov 24 PHP
Look And Say 序列php实现代码
May 22 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
探讨php中header的用法详解
Jun 07 PHP
基于php冒泡排序算法的深入理解
Jun 09 PHP
功能强大的php文件上传类
Aug 29 PHP
PHPCMS2008广告模板SQL注入漏洞修复
Oct 11 PHP
php图像验证码生成代码
Jun 08 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
thinkphp框架使用JWTtoken的方法详解
Oct 10 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中的 == 运算符进行字符串比较
2006/11/26 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
Zend Framework创建自己的动作助手详解
2016/03/05 PHP
php接口技术实例详解
2016/12/07 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
PHP经典实用正则表达式小结
2017/05/04 PHP
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
jquery清空textarea等输入框实现代码
2013/04/22 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
获取阴历(农历)和当前日期的js代码
2016/02/15 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
Python 移动光标位置的方法
2019/01/20 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
Python同时处理多个异常的方法
2020/07/28 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
木工主管岗位职责
2013/12/08 职场文书
2014年纪检工作总结
2014/11/12 职场文书
2014年民警工作总结
2014/11/25 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书