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 相关文章推荐
Oracle Faq(Oracle的版本)
Oct 09 PHP
在smarty模板中使用PHP函数的方法
Apr 23 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
Nov 04 PHP
Zend Guard使用指南及问题处理
Jan 07 PHP
PHP如何使用Memcached
Apr 05 PHP
php 自定义错误日志实例详解
Nov 12 PHP
php从数据库中读取特定的行(实例)
Jun 02 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
Discuz不使用插件实现简单的打赏功能
Mar 21 PHP
PHP 对象接口简单实现方法示例
Apr 13 PHP
实例讲解PHP表单
Jun 10 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 替换模板变量实现步骤
2009/08/24 PHP
PHP 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
js判断变量是否空值的代码
2008/10/26 Javascript
YUI Compressor压缩JavaScript原理及微优化
2013/01/07 Javascript
JavaScript实现自己的DOM选择器原理及代码
2013/03/04 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
详解node如何让一个端口同时支持https与http
2017/07/04 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
深入浅析Python中join 和 split详解(推荐)
2016/06/30 Python
Python判断文件或文件夹是否存在的三种方法
2017/07/27 Python
python内存动态分配过程详解
2019/07/15 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
python使用minimax算法实现五子棋
2019/07/29 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
英格兰橄榄球商店:England Rugby Store
2016/12/17 全球购物
企业员工培训感言
2014/02/26 职场文书
2014最新版群众路线四风整改措施
2014/09/24 职场文书
安阳殷墟导游词
2015/02/10 职场文书
党员承诺书范文2015
2015/04/27 职场文书
无工作证明怎么写
2015/06/15 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python