php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法


Posted in PHP onJuly 12, 2016

本文实例讲述了php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法。分享给大家供大家参考,具体如下:

由于出于安全考虑,参数传递的时候需要进行加密和解密,一个比较简单的方法是直接使用php中的函数mcrypt_encrypt、mcrypt_decrypt,一个加密,一个解密,但是问题又出现了,这个加密过程中会产生一些使url混乱的符号,于是在加密后对加密字符再进行一次处理,然后多了一一次解析:

$key = "miyao";//密钥
$string="jiami"//需要加密的字符
//自带的加密函数
$crypttext = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
$encrypted =trim($this->safe_b64encode($crypttext));//对特殊字符进行处理
$key="miyao"
$crypttexttb=safe_b64decode($encrypted)//对特殊字符解析
$decryptedtb = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($crypttexttb), MCRYPT_MODE_CBC, md5(md5($key))), "\0")//解密函数
//处理特殊字符
public function safe_b64encode($string) {
    $data = base64_encode($string);
    $data = str_replace(array('+','/','='),array('-','_',''),$data);
    return $data;
}
//解析特殊字符
public function safe_b64decode($string) {
    $data = str_replace(array('-','_'),array('+','/'),$string);
    $mod4 = strlen($data) % 4;
    if ($mod4) {
      $data .= substr('====', $mod4);
    }
    return base64_decode($data);
}

PHP 相关文章推荐
php的控制语句
Oct 09 PHP
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
Sep 24 PHP
php设计模式之命令模式的应用详解
May 21 PHP
浅析linux下apache服务器的配置和管理
Aug 10 PHP
PHP exif扩展方法开启详解
Jul 28 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
Jun 10 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
php实现学生管理系统
Mar 21 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 PHP
laravel Validator ajax返回错误信息的方法
Sep 29 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
May 25 PHP
PHP数组访问常用方法解析
Sep 05 PHP
PHP简单实现DES加密解密的方法
Jul 12 #PHP
微信支付开发交易通知实例
Jul 12 #PHP
php实现的debug log日志操作类实例
Jul 12 #PHP
PHP数据库表操作的封装类及用法实例详解
Jul 12 #PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 #PHP
php处理带有中文URL的方法
Jul 11 #PHP
PHP实现JS中escape与unescape的方法
Jul 11 #PHP
You might like
php学习笔记 数组遍历实现代码
2011/06/09 PHP
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
[00:03]DOTA2新版本PA至宝展示
2014/11/19 DOTA
Python enumerate遍历数组示例应用
2008/09/06 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
Python pandas如何向excel添加数据
2020/05/22 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
如何强制垃圾回收
2015/10/06 面试题
介绍一下linux文件系统分配策略
2012/11/17 面试题
儿科护理实习自我鉴定
2013/09/19 职场文书
社团成立邀请函
2014/01/08 职场文书
有关环保的标语
2014/06/13 职场文书
初中成绩单评语
2014/12/29 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书
代理词怎么写
2015/05/25 职场文书
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers