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函数
Dec 06 PHP
mysql limit查询优化分析
Nov 12 PHP
php mssql 日期出现中文字符的解决方法
Mar 10 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
php中filter_input函数用法分析
Nov 15 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
Zend Framework前端控制器用法示例
Dec 11 PHP
Yii2实现多域名跨域同步登录退出
Feb 04 PHP
php curl获取到json对象并转成数组array的方法
May 31 PHP
php+websocket 实现的聊天室功能详解
May 27 PHP
详解Laravel框架的依赖注入功能
May 27 PHP
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
Apr 11 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数组去重实例及分析
2013/11/26 PHP
五款PHP代码重构工具推荐
2014/10/14 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
PDO::setAttribute讲解
2019/01/29 PHP
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
js继承 Base类的源码解析
2008/12/30 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
2013/07/09 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
react高阶组件经典应用之权限控制详解
2017/09/07 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
[02:21]2018完美盛典章节片——初心
2018/12/17 DOTA
python基于queue和threading实现多线程下载实例
2014/10/08 Python
Python实现获取操作系统版本信息方法
2015/04/08 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
django框架forms组件用法实例详解
2019/12/10 Python
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
数据库基础的一些面试题
2012/02/25 面试题
卫生巾广告词
2014/03/18 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
报案材料怎么写
2015/05/25 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP
Spring Boot mybatis-config 和 log4j 输出sql 日志的方式
2021/07/26 Java/Android
在js中修改html body的样式
2021/11/11 Javascript