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 相关文章推荐
动态新闻发布的实现及其技巧
Oct 09 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
php中{}大括号是什么意思
Dec 01 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
如何写php守护进程(Daemon)
Dec 30 PHP
YII Framework框架教程之缓存用法详解
Mar 14 PHP
Thinkphp单字母函数使用指南
May 08 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
Jul 23 PHP
php实现购物车功能(以大苹果购物网为例)
Mar 09 PHP
PHP实现PDO操作mysql存储过程示例
Feb 13 PHP
PHP配置ZendOpcache插件加速
Feb 14 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
Feb 26 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常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
浅析return false的正确使用
2013/11/04 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
2017/12/20 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
JS判断两个数组或对象是否相同的方法示例
2019/02/28 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
python编写微信远程控制电脑的程序
2018/01/05 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
centos7之Python3.74安装教程
2019/08/15 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
python字典setdefault方法和get方法使用实例
2019/12/25 Python
HTML5 Canvas实现平移/放缩/旋转deom示例(附截图)
2013/07/04 HTML / CSS
校班主任推荐信范文
2013/12/03 职场文书
工作交流会欢迎词
2014/01/12 职场文书
分家协议书
2014/04/21 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
小学老师对学生的评语
2014/12/29 职场文书
介绍长城的导游词
2015/01/30 职场文书
经理聘任证明
2015/03/02 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
工作年限证明模板
2015/06/15 职场文书
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python