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 相关文章推荐
如何提高MYSQL数据库的查询统计速度 select 索引应用
Apr 11 PHP
php echo 输出字符串函数详解
May 13 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
Jun 26 PHP
使用array_map简单搞定PHP删除文件、删除目录
Oct 29 PHP
CI框架给视图添加动态数据
Dec 01 PHP
PHP中addcslashes与stripcslashes函数用法分析
Jan 07 PHP
thinkPHP3.2简单实现文件上传的方法
May 16 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
Dec 02 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
Laravel推荐使用的十个辅助函数
May 10 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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 Ctemplate引擎开发相关内容
2012/03/03 PHP
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
2013/06/21 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
jQuery实现企业网站横幅焦点图切换功能实例
2015/04/30 Javascript
浅谈被jQuery抛弃的函数及替代函数
2015/05/03 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
js正则表达式简单校验方法
2021/01/03 Javascript
学习python类方法与对象方法
2016/03/15 Python
Python实现 多进程导入CSV数据到 MySQL
2017/02/26 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
python实现简单图片物体标注工具
2019/03/18 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
python 多线程中join()的作用
2020/10/29 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
英国计算机商店:Technextday
2019/12/28 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
个人应聘自我评价分享
2013/11/18 职场文书
2014年项目工作总结
2014/11/24 职场文书
应届生简历自我评价
2015/03/11 职场文书
高中运动会前导词
2015/07/20 职场文书
《乘法分配律》教学反思
2016/02/24 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
openstack中的rpc远程调用的方法
2021/07/09 Python