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编程网上资源导航
Oct 09 PHP
图象函数中的中文显示
Oct 09 PHP
php购物网站支付paypal使用方法
Nov 28 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
Jun 07 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
php常用表单验证类用法实例
Jun 18 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 PHP
PHP实现的限制IP投票程序IP来源分析
May 04 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
Jan 11 PHP
php+webSoket实现聊天室示例代码(附源码)
Feb 17 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 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
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
推荐个功能齐全的发送PHP邮件类
2007/01/03 PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
2010/12/19 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
php设计模式之委托模式
2016/02/13 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
详解php几行代码实现CSV格式文件输出
2017/07/01 PHP
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
2017/02/19 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
如何通过python计算圆周率PI
2020/11/11 Python
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
公司活动总结范文
2014/07/01 职场文书
岗位聘任报告
2015/03/02 职场文书
python实现图片批量压缩
2021/04/24 Python
PyQt5实现多张图片显示并滚动
2021/06/11 Python
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers