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文件上传实例详解!!!
Jan 02 PHP
linux下 C语言对 php 扩展
Dec 14 PHP
PHP 事务处理数据实现代码
May 13 PHP
php中随机显示图片的函数代码
Jun 23 PHP
joomla jce editor 解决上传中文名文件失败问题
Jun 09 PHP
php curl选项列表(超详细)
Jul 01 PHP
PHP之uniqid()函数用法
Nov 03 PHP
高质量PHP代码的50个实用技巧必备(上)
Jan 22 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 PHP
Laravel源码解析之路由的使用和示例详解
Sep 27 PHP
laravel dingo API返回自定义错误信息的实例
Sep 29 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
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
php xml文件操作实现代码(二)
2009/03/20 PHP
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
php实现的双向队列类实例
2014/09/24 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
php中fgetcsv()函数用法实例
2014/11/28 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
使用Python3制作TCP端口扫描器
2017/04/17 Python
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
python hash每次调用结果不同的原因
2019/11/21 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
智能旅行箱:Horizn Studios
2018/04/30 全球购物
财务会计专业应届毕业生求职信
2013/10/18 职场文书
英语专业求职信
2014/07/08 职场文书
2014年学校体育工作总结
2014/12/08 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
黑白记忆观后感
2015/06/18 职场文书
运动会通讯稿50字
2015/07/20 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书