PHP使用DES进行加密与解密的方法详解


Posted in PHP onJune 06, 2013

DES是一种标准的数据加密算法,关于这个算法的详细介绍可以参考wiki和百度百科:

wiki百科    百度百科

php中有一个扩展可以支持DES的加密算法,是:extension=php_mcrypt.dll

在配置文件中将这个扩展打开还不能够在windows环境下使用

需要将PHP文件夹下的 libmcrypt.dll 拷贝到系统的 system32 目录下,这是通过phpinfo可以查看到mcrypt表示这个模块可以正常试用了。

下面是PHP中使用DES加密解密的一个例子:

//$input - stuff to decrypt
    //$key - the secret key to use
    function do_mencrypt($input, $key)
    {
        $input = str_replace(""n", "", $input);
        $input = str_replace(""t", "", $input);
        $input = str_replace(""r", "", $input);
        $key = substr(md5($key), 0, 24);
        $td = mcrypt_module_open('tripledes', '', 'ecb', '');
        $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        mcrypt_generic_init($td, $key, $iv);
        $encrypted_data = mcrypt_generic($td, $input);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        return trim(chop(base64_encode($encrypted_data)));
    }
    //$input - stuff to decrypt
    //$key - the secret key to use
    function do_mdecrypt($input, $key)
    {
        $input = str_replace(""n", "", $input);
        $input = str_replace(""t", "", $input);
        $input = str_replace(""r", "", $input);
        $input = trim(chop(base64_decode($input)));
        $td = mcrypt_module_open('tripledes', '', 'ecb', '');
        $key = substr(md5($key), 0, 24);
        $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        mcrypt_generic_init($td, $key, $iv);
        $decrypted_data = mdecrypt_generic($td, $input);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        return trim(chop($decrypted_data));
    }  
PHP 相关文章推荐
php 结果集的分页实现代码
Mar 10 PHP
让PHP开发者事半功倍的十大技巧小结
Apr 20 PHP
用PHP将网址字符串转换成超链接(网址或email)
May 25 PHP
Apache 配置详解(最好的APACHE配置教程)
Jul 04 PHP
上传文件先创建目录 再上传到目录里面去
Dec 29 PHP
优化PHP程序的方法小结
Feb 23 PHP
基于php-fpm 参数的深入理解
Jun 03 PHP
浅谈COOKIE和SESSION区别
Jul 19 PHP
php限制文件下载速度的代码
Oct 20 PHP
yii gridview实现时间段筛选功能
Aug 15 PHP
浅谈PHPANALYSIS提取关键字
Mar 08 PHP
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
Apr 01 PHP
php xml常用函数的集合(比较详细)
Jun 06 #PHP
PHP5函数小全(分享)
Jun 06 #PHP
解析php时间戳与日期的转换
Jun 06 #PHP
基于header的一些常用指令详解
Jun 06 #PHP
深入php 正则表达式的学习探讨
Jun 06 #PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
Jun 06 #PHP
PHP CodeBase:将时间显示为"刚刚""n分钟/小时前"的方法详解
Jun 06 #PHP
You might like
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
PHP中echo与print区别点整理
2021/03/09 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
比较详细的关于javascript 解析json的代码
2009/12/16 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
pycham查看程序执行的时间方法
2018/11/29 Python
值得收藏的10道python 面试题
2019/04/15 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
2019/05/15 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
Python中zip()函数的解释和可视化(实例详解)
2020/02/16 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
Ref与out有什么不同
2012/11/24 面试题
房地产财务管理制度
2014/02/02 职场文书
毕业论文评语大全
2014/04/29 职场文书
青春奉献演讲稿
2014/05/08 职场文书
销售团队口号大全
2014/06/06 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
2015年大学团支部工作总结
2015/05/13 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
在Python 中将类对象序列化为JSON
2022/04/06 Python