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 相关文章推荐
图书管理程序(一)
Oct 09 PHP
mysql建立外键
Nov 25 PHP
PHP+Tidy-完美的XHTML纠错+过滤
Apr 10 PHP
彻底杜绝PHP的session cookie错误
Aug 09 PHP
PHP与C#分别格式化文件大小的代码
May 14 PHP
PHP数组排序函数合集 以及它们之间的联系分析
Jun 27 PHP
PHP动态生成javascript文件的2个例子
Apr 11 PHP
yii2带搜索功能的下拉框实例详解
May 12 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
Feb 04 PHP
PHP长网址与短网址的实现方法
Oct 13 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
Oct 17 PHP
一文看懂PHP进程管理器php-fpm
Jun 01 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
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
聊天室php&amp;mysql(二)
2006/10/09 PHP
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
javascript函数中的arguments参数
2010/08/01 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
2014/05/08 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
浅谈js数据类型判断与数组判断
2016/08/29 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
Python之字典添加元素的几种方法
2020/09/30 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
C语言中break与continue的区别
2012/07/12 面试题
灵泰克Java笔试题
2016/01/09 面试题
大学毕业生工作的自我评价
2013/10/01 职场文书
五星级酒店餐饮部总监的标准岗位职责
2014/02/17 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
土建技术员岗位职责
2015/04/11 职场文书
2015年银行信贷员工作总结
2015/05/19 职场文书
房贷收入证明范本
2015/06/12 职场文书
中学音乐课教学反思
2016/02/18 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android