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 相关文章推荐
UCenter Home二次开发指南
May 28 PHP
理解php原理的opcodes(操作码)
Oct 26 PHP
hessian 在PHP中的使用介绍
Dec 13 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
Jul 03 PHP
PHP中其实也可以用方法链
Nov 10 PHP
php检测图片木马多进制编程实践
Apr 11 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
PHP微信开发之查询城市天气
Jun 23 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
Jun 17 PHP
PHP实现图片压缩
Sep 09 PHP
php使用curl模拟多线程实现批处理功能示例
Jul 25 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
Oct 25 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
一个oracle+PHP的查询的例子
2006/10/09 PHP
利用PHP生成静态HTML文档的原理
2012/10/29 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
Python实例一个类背后发生了什么
2016/02/09 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
求职意向书
2014/07/29 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
施工安全协议书范本
2014/09/26 职场文书
学校总务处领导班子民主生活会对照检查材料思想汇报
2014/09/27 职场文书
信息合作协议书
2014/10/09 职场文书
2014年工商所工作总结
2014/12/09 职场文书
房产电话营销开场白
2015/05/29 职场文书
地道战观后感400字
2015/06/04 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python