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下利用header()函数设置浏览器缓存的代码
Sep 01 PHP
php检测useragent版本示例
Mar 24 PHP
php使用GeoIP库实例
Jun 27 PHP
基于递归实现的php树形菜单代码
Nov 19 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
Jul 06 PHP
PHP中两个float(浮点数)比较实例分析
Sep 27 PHP
PHP可变变量学习小结
Nov 29 PHP
php简单实现短网址(短链)还原的方法(测试可用)
May 09 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
May 10 PHP
PHP实现浏览器格式化显示XML的方法示例
Jan 22 PHP
php写入文件不覆盖的实例讲解
Sep 17 PHP
PHP常量及变量区别原理详解
Aug 14 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将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
如何用javascript控制上传文件的大小
2006/10/26 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
JavaScript基于ajax编辑信息用法实例
2015/07/15 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
js 图片懒加载的实现
2020/10/21 Javascript
python实现apahce网站日志分析示例
2014/04/02 Python
一个基于flask的web应用诞生 flask和mysql相连(4)
2017/04/11 Python
python删除过期log文件操作实例解析
2018/01/31 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
2019/06/03 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
阿迪达斯西班牙官方网站:adidas西班牙
2016/07/21 全球购物
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
人资专员岗位职责
2014/04/04 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
后勤个人工作总结
2015/02/28 职场文书
自荐信怎么写
2015/03/04 职场文书
东京审判观后感
2015/06/01 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL