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学习教程之第2天
Jun 15 PHP
PHP的SQL注入过程分析
Jan 06 PHP
PHP基础教程(php入门基础教程)一些code代码
Jan 06 PHP
PHP使用正则表达式清除超链接文本
Nov 12 PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 PHP
php将csv文件导入到mysql数据库的方法
Dec 24 PHP
php显示指定目录下子目录的方法
Mar 20 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
Dec 01 PHP
PHP实现的限制IP投票程序IP来源分析
May 04 PHP
php微信开发之自定义菜单实现
Nov 18 PHP
yii2中dropDownList实现二级和三级联动写法
Apr 26 PHP
PHP与Web页面的交互示例详解一
Aug 04 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
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
小程序实现搜索框
2020/06/19 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
centos下更新Python版本的步骤
2013/02/12 Python
用Python进行行为驱动开发的入门教程
2015/04/23 Python
Python如何判断数独是否合法
2016/09/08 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
tensorflow 获取变量&打印权值的实例讲解
2018/06/14 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
如何使用 Python 读取文件和照片的创建日期
2020/09/05 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
名词解释型面试题(主要是网络)
2013/12/27 面试题
校庆口号
2014/06/20 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
行政申诉状范文
2015/05/20 职场文书
通讯稿格式及范文
2015/07/22 职场文书