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 相关文章推荐
从C/C++迁移到PHP——判断字符类型的函数
Oct 09 PHP
测试您的 PHP 水平的题目
May 30 PHP
PHP中如何定义和使用常量
Feb 28 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
windows7下php开发环境搭建图文教程
Jan 06 PHP
php实现Mysql简易操作类
Oct 11 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
php fread读取文件注意事项
Sep 24 PHP
PHP7扩展开发教程之Hello World实现方法示例
Aug 03 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
PHP进阶学习之命名空间基本用法分析
Jun 18 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 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
zf框架的数据库追踪器使用示例
2014/03/13 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
jQuery生成asp.net服务器控件的代码
2010/02/04 Javascript
通过判断JavaScript的版本实现执行不同的代码
2010/05/11 Javascript
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
Python3多线程操作简单示例
2018/05/22 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
德国高性价比网上药店:medpex
2017/07/09 全球购物
幼儿师范毕业生自荐信
2013/11/09 职场文书
创业计划书模版
2014/02/05 职场文书
村干部承诺书
2014/03/28 职场文书
关于祖国的演讲稿
2014/05/04 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
经济国贸专业求职信
2014/06/18 职场文书
自荐信格式范文
2015/03/04 职场文书
《葡萄沟》教学反思
2016/02/23 职场文书