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中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
Apr 25 PHP
探讨:如何使用PhpDocumentor生成文档
Jun 25 PHP
php日历制作代码分享
Jan 20 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
php中的ini配置原理详解
Oct 14 PHP
PHP中类的继承和用法实例分析
May 24 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
Mar 01 PHP
swoole_process实现进程池的方法示例
Oct 29 PHP
Laravel5.4框架使用socialite实现github登录的方法
Mar 20 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 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
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
获取PHP警告错误信息的解决方法
2013/06/03 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
区分vue-router的hash和history模式
2020/10/03 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
python实现的udp协议Server和Client代码实例
2014/06/04 Python
详解python中的线程
2018/02/10 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
pandas计数 value_counts()的使用
2019/06/24 Python
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
购买一个高级域名:BuyDomains
2018/03/11 全球购物
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
网络安全类面试题
2015/08/01 面试题
师范生实习个人的自我评价
2013/09/28 职场文书
公司活动总结范文
2014/07/01 职场文书
基层干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
年会邀请函的格式及范文五篇
2019/11/02 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
python实现的web监控系统
2021/04/27 Python
Oracle 多表查询基本语法实例
2022/04/18 Oracle