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源代码
Oct 09 PHP
PHP输入流php://input介绍
Sep 18 PHP
php上传文件中文文件名乱码的解决方法
Nov 01 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
Jan 03 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
php获取根域名方法汇总
Oct 28 PHP
php创建桌面快捷方式实现方法
Dec 31 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
Jan 07 PHP
php短信接口代码
May 13 PHP
php 如何获取文件的后缀名
Jun 05 PHP
php 使用curl模拟ip和来源进行访问的实现方法
May 02 PHP
详解php中serialize()和unserialize()函数
Jul 08 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 时间转换Unix时间戳代码
2010/01/22 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
javascript内置对象arguments详解
2014/03/16 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
js获取域名的方法
2015/01/27 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
python简单分割文件的方法
2015/07/30 Python
python绘制简单折线图代码示例
2017/12/19 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
深入浅析python的第三方库pandas
2020/02/13 Python
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
温泉秘密:Onsen Secret
2020/07/06 全球购物
应用化学专业本科生求职信
2013/09/29 职场文书
医学院毕业生自荐信
2013/11/08 职场文书
个人简历自荐信
2014/06/26 职场文书
经典演讲稿开场白
2014/08/25 职场文书
党支部考察鉴定意见
2015/06/02 职场文书
POST提交数据常见的四种方式
2022/01/18 HTML / CSS