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 相关文章推荐
php 中文处理函数集合
Aug 27 PHP
php设计模式之观察者模式的应用详解
May 21 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 PHP
thinkphp中空模板与空模块的用法实例
Nov 26 PHP
PHP积分兑换接口实例
Feb 09 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
简单谈谈php延迟静态绑定
Jan 26 PHP
php str_replace替换指定次数的方法详解
May 05 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
php两点地理坐标距离的计算方法
Dec 29 PHP
基于PHP+mysql实现新闻发布系统的开发
Aug 06 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
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
如何快速上手Vuex
2017/02/14 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
[31:55]完美世界DOTA2联赛循环赛 IO vs GXR BO2第一场 11.04
2020/11/05 DOTA
Python 使用os.remove删除文件夹时报错的解决方法
2017/01/13 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
PyQt5实现简单数据标注工具
2019/03/18 Python
简单了解python单例模式的几种写法
2019/07/01 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
python实现打砖块游戏
2020/02/25 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
浅谈Python中的字符串
2020/06/10 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
CSS3实现类似翻书效果的过渡动画的示例代码
2019/09/06 HTML / CSS
Linux常见面试题
2016/10/04 面试题
opencv实现图像几何变换
2021/03/24 Python
奥林匹克运动会口号
2014/06/19 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android