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 相关文章推荐
ThinkPHP之R方法实例详解
Jun 20 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
Jun 26 PHP
php简单实现查询数据库返回json数据
Apr 16 PHP
php使用ob_flush不能每隔一秒输出原理分析
Jun 02 PHP
ThinkPHP开发框架函数详解:C方法
Aug 14 PHP
Joomla开启SEF的方法
May 04 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
Dec 09 PHP
php利用imagemagick实现复古老照片效果实例
Feb 16 PHP
php对xml文件的增删改查操作实现方法分析
May 19 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 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
php中变量及部分适用方法
2008/03/27 PHP
PHP 上传文件大小限制
2009/07/05 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
PHP判断图片格式的七种方法小结
2013/06/03 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
PHP封装cURL工具类与应用示例
2019/07/01 PHP
ie focus bug 解决方法
2009/09/03 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
Django接受前端数据的几种方法总结
2016/11/04 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
2018/10/21 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
Python字符串三种格式化输出
2020/09/17 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
大学本科毕业生求职信范文
2013/12/18 职场文书
团支部建设方案
2014/05/02 职场文书
运动会通讯稿200字
2015/07/20 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android