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与SQL注入攻击防范小技巧
Sep 16 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
php Calender(日历)代码分享
Jan 03 PHP
使用php显示搜索引擎来的关键词
Feb 13 PHP
PHP仿微信多图片预览上传实例代码
Sep 13 PHP
CI框架数据库查询缓存优化的方法
Nov 21 PHP
PHP中SQL查询语句的id=%d解释(推荐)
Dec 10 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
May 02 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
PHP中16个高危函数整理
Sep 19 PHP
Laravel 实现添加多语言提示信息
Oct 25 PHP
phpstudy隐藏index.php的方法
Sep 21 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
一个分页的论坛
2006/10/09 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
浅析PHP开发规范
2018/02/05 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
使用javascript创建快捷方式的简单实例
2013/08/09 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
使用GruntJS构建Web程序之构建篇
2014/06/04 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
Openlayers实现地图的基本操作
2020/09/28 Javascript
python广度优先搜索得到两点间最短路径
2019/01/17 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
材料采购员岗位职责
2013/12/17 职场文书
网络研修随笔感言
2014/02/17 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
物业消防安全责任书
2014/07/23 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
2014年文员工作总结
2014/11/18 职场文书
2015圣诞节贺卡寄语
2015/03/24 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
茶花女读书笔记
2015/06/29 职场文书
html2 canvas svg不能识别的解决方案
2021/06/03 HTML / CSS