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 相关文章推荐
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
基于PHP创建Cookie数组的详解
Jul 03 PHP
一个php短网址的生成代码(仿微博短网址)
May 07 PHP
PHP中shuffle数组值随便排序函数用法
Nov 21 PHP
smarty模板引擎中自定义函数的方法
Jan 22 PHP
PHP传参之传值与传址的区别
Apr 24 PHP
WordPress网站性能优化指南
Nov 18 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
Jun 05 PHP
PHP实现的日历功能示例
Sep 01 PHP
php函数式编程简单示例
Aug 08 PHP
php数组和链表的区别总结
Sep 20 PHP
php连接sftp的作用以及实例代码
Sep 23 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
Codeigniter检测表单post数据的方法
2015/03/21 PHP
php PDO异常处理详解
2016/11/20 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
AngularJS中$interval的用法详解
2016/02/02 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
[07:57]2018DOTA2国际邀请赛寻真——PSG.LGD凤凰浴火
2018/08/12 DOTA
使用PDB模式调试Python程序介绍
2015/04/05 Python
用Python实现协同过滤的教程
2015/04/08 Python
Python实现的字典值比较功能示例
2018/01/08 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
python感知机实现代码
2019/01/18 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
2020/06/04 Python
Python控制台实现交互式环境执行
2020/06/09 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
Python根据字符串调用函数过程解析
2020/11/05 Python
Python爬虫简单运用爬取代理IP的实现
2020/12/01 Python
python实现视频压缩功能
2020/12/18 Python
策划助理岗位职责
2013/11/18 职场文书
职业生涯规划设计步骤
2014/01/12 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
市场营销策划方案
2014/06/11 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
写给医院的感谢信
2015/01/22 职场文书
违纪学生保证书
2015/02/27 职场文书
《家世》读后感:看家训的力量
2019/12/30 职场文书