PHP实现的AES双向加密解密功能示例【128位】


Posted in PHP onSeptember 03, 2018

本文实例讲述了PHP实现的AES双向加密解密功能。分享给大家供大家参考,具体如下:

<?php
/*
 * Created on 2018-9-1
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
 /**
 用法:
 Security::encrypt($str,$key);
 Security::decrypt($str,$key);
 */
 class Security {
  public static function encrypt($input, $key) {
   $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
   $input = Security::pkcs5_pad($input, $size);
   $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
   $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
   mcrypt_generic_init($td, $key, $iv);
   $data = mcrypt_generic($td, $input);
   mcrypt_generic_deinit($td);
   mcrypt_module_close($td);
   $data = base64_encode($data);
   return $data;
  }
  private static function pkcs5_pad ($text, $blocksize) {
   $pad = $blocksize - (strlen($text) % $blocksize);
   return $text . str_repeat(chr($pad), $pad);
  }
  public static function decrypt($sStr, $sKey) {
   $decrypted= mcrypt_decrypt(
    MCRYPT_RIJNDAEL_128,
    $sKey,
    base64_decode($sStr),
    MCRYPT_MODE_ECB
   );
   $dec_s = strlen($decrypted);
   $padding = ord($decrypted[$dec_s-1]);
   $decrypted = substr($decrypted, 0, -$padding);
   return $decrypted;
  }
 }
//用法示例:
$str = "3water.com";
$key = "123456";
echo "原始字符串:".$str."<br/>";
$pwdstr = Security::encrypt($str,$key);
echo "加密后:".$pwdstr."<br/>";
$destr = Security::decrypt($pwdstr,$key);
echo "解密结果:".$destr;
?>

运行结果:

原始字符串:3water.com
加密后:O0vbyikeZRVnXueCodfSFw==
解密结果:3water.com

PHP 相关文章推荐
支持oicq头像的留言簿(二)
Oct 09 PHP
PHP-MySQL教程归纳总结
Jun 07 PHP
在PHP中利用wsdl创建标准webservice的实现代码
Dec 07 PHP
php生成静态文件的多种方法分享
Jul 17 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
PHP使用递归方式列出当前目录下所有文件的方法
Jun 02 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
PHP对象链式操作实现原理分析
Oct 09 PHP
浅谈PHP安全防护之Web攻击
Jan 03 PHP
php 如何设置一个严格控制过期时间的session
May 05 PHP
不常用但很实用的PHP预定义变量分析
Jun 25 PHP
php遍历目录下文件并按修改时间排序操作示例
Jul 12 PHP
PHP实现的日历功能示例
Sep 01 #PHP
thinkPHP5框架分页样式类完整示例
Sep 01 #PHP
php操作mongodb封装类与用法实例
Sep 01 #PHP
thinkphp集成前端脚手架Vue-cli的教程图解
Aug 30 #PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 #PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 #PHP
PHP实现websocket通信的方法示例
Aug 28 #PHP
You might like
PHP学习之PHP表达式
2006/10/09 PHP
PHP EOT定界符的使用详解
2008/09/30 PHP
PHP取进制余数函数代码
2012/01/19 PHP
php数组一对一替换实现代码
2012/08/31 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
php中final关键字用法分析
2016/12/07 PHP
htm调用JS代码
2007/03/15 Javascript
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
node.js中使用node-schedule实现定时任务实例
2014/06/03 Javascript
JavaScript中的console.dir()函数介绍
2014/12/29 Javascript
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
Python画图学习入门教程
2016/07/01 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
Python实现针对中文排序的方法
2017/05/09 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
Python操作Elasticsearch处理timeout超时
2020/07/17 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
计算机学生求职信范文
2014/01/30 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
团代会宣传工作方案
2014/05/08 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
社区活动总结
2015/02/04 职场文书