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 相关文章推荐
基于curl数据采集之单页面并行采集函数get_htmls的使用
Apr 28 PHP
php缓冲 output_buffering和ob_start使用介绍
Jan 30 PHP
强制PHP命令行脚本单进程运行的方法
Apr 15 PHP
PHP中使用smarty生成静态文件的例子
Apr 24 PHP
PHP中的traits实现代码复用使用实例
May 13 PHP
PHP使用fopen与file_get_contents读取文件实例分享
Mar 04 PHP
ThinkPHP和UCenter接口冲突的解决方法
Jul 25 PHP
PHP 500报错的快速解决方法
Dec 14 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
Jun 13 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
Oct 08 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设置session(过期、失效、有效期)
2015/11/12 PHP
php无限级分类实现方法分析
2016/10/19 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
javascript中的作用域scope介绍
2010/12/28 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
2013/04/09 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
2015/08/11 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
JQuery.dataTables表格插件添加跳转到指定页
2017/06/09 jQuery
ionic3 懒加载
2017/08/16 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
python3.7+selenium模拟淘宝登录功能的实现
2020/05/26 Python
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
Python里面如何拷贝一个对象
2014/02/17 面试题
成人教育自我鉴定
2013/11/01 职场文书
中层干部竞争上岗演讲稿
2014/01/13 职场文书
社区中秋节活动方案
2014/01/29 职场文书
教师远程培训感言
2014/03/06 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
《悯农》教学反思
2014/04/28 职场文书
家长对孩子的寄语
2015/02/26 职场文书
刑事附带民事代理词
2015/05/25 职场文书
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android