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生成月历代码
Jun 14 PHP
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
Jun 08 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
PHP数据集构建JSON格式及新数组的方法
Nov 07 PHP
php截取字符串并保留完整xml标签的函数代码
Feb 06 PHP
php笔记之:php数组相关函数的使用
Apr 26 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
Apr 08 PHP
php+ajax实时输入自动搜索匹配的方法
Dec 26 PHP
PHP开发注意事项总结
Feb 04 PHP
php面向对象编程self和static的区别
May 08 PHP
浅谈Laravel核心解读之Console内核
Dec 02 PHP
解决laravel资源加载路径设置的问题
Oct 14 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获取数组长度的方法(有实例)
2013/10/27 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
把textarea中字符串里含有的回车换行替换成<br>的javascript代码
2007/04/20 Javascript
javascript FormatNumber函数实现方法
2008/12/30 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
WEB开发之注册页面验证码倒计时代码的实现
2016/12/15 Javascript
js时间控件只显示年月
2017/01/08 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
浅谈Python的垃圾回收机制
2016/12/17 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
python基础教程项目三之万能的XML
2018/04/02 Python
python里运用私有属性和方法总结
2019/07/08 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
mac使用python识别图形验证码功能
2020/01/10 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
L’urv官网:精品女性运动服品牌
2019/07/07 全球购物
通用C#笔试题附答案
2016/11/26 面试题
婚礼新郎父母答谢词
2014/01/16 职场文书
校园安全检查制度
2014/02/03 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
大学生活动总结模板
2014/07/02 职场文书
交通事故协议书范文
2014/10/23 职场文书
明确岗位职责
2015/02/14 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python