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的安全策略
Oct 09 PHP
实现分十页分向前十页向后十页的处理
Oct 09 PHP
php调用dll的实例操作动画与代码分享
Aug 14 PHP
6种php上传图片重命名的方法实例
Nov 04 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
Jan 07 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
Jan 17 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 PHP
PHP中imagick函数的中文解释
Jan 21 PHP
详解php命令注入攻击
Apr 06 PHP
php中的buffer缓冲区用法分析
May 31 PHP
Laravel中GraphQL接口请求频率实战记录
Sep 01 PHP
如何利用PHP实现上传图片功能详解
Sep 24 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 mcrypt可逆加密算法分析
2011/07/19 PHP
浅析is_writable的php实现
2013/06/18 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
简单谈谈favicon
2015/06/10 PHP
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
JavaScript String 对象常用方法总结
2016/04/28 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
JavaScript实现的数字与字符串转换功能示例
2017/08/23 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
ES6 十大特性简介
2020/12/09 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
python实现带验证码网站的自动登陆实现代码
2015/01/12 Python
Python实现批量下载图片的方法
2015/07/08 Python
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
python中web框架的自定义创建
2019/09/08 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
Python super()方法原理详解
2020/03/31 Python
英国著名的药妆网站:Escentual
2016/07/29 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
南京迈特望C/C++面试题
2012/07/09 面试题
信用卡结清证明怎么写
2014/09/13 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
老兵退伍感言
2015/08/03 职场文书
2019秋季运动会口号
2019/06/25 职场文书