PHP使用DES进行加密解密

DES是一种对称加密算法,也就是通过密文和合法的密钥能够将明文还原出来,在程序开发过程中有些 接口可能需要获取原始数据,而发送的数据又比较敏感(比如用户的密码等信息),这时可以选择DES加密算法,DES的安全性还算可靠,只要加密密钥不泄 露,目前破解的方法只有穷举法进行破解。

再说一下应用时需要注意的地方,

1.DES加密时需要的key(密钥)长度不能超过8位,一般我们设置8位就可以了。

2.DES加密后的数据是二进制数据,如果使用GET方式传输应该将其处理一下才可以(比如可以转换成16进制、base64等)。

3.需要加密的数据如果长度不是8字节的倍数,在解密后末尾会有多余的不可预知的东西(不足8字节的部分会自动补齐到8字节),需要进行处理才能得到严格 意义上的原始数据,或者我们在加密原始数据前就将数据补齐到8字节的倍数(比如接口约定原始数据不足8字节的部分用空格填充等)。

接下来是一个简单的流程图来说明DES加密解密过程:

另外在PHP中使用DES进行加密解密时,如果已经安装了mcrypt扩展,将非常简单,如果没有开启也有办法,下面是DES进行加密解密的程序demo,支持开启或没有开启mcrypt扩展的情况,使用方式看注释说明。需要的可以下载。

时间: 2024-08-03 12:29:59

PHP使用DES进行加密解密的相关文章

DES非对称加密解密跨平台(C#,安卓,ios)

#region 跨平台加解密(c# 安卓 IOS) public static string sKey = "123456"; /// <summary> /// 解密 /// </summary> /// <param name="pToDecrypt">要解密的以Base64</param> /// <param name="sKey">密钥,且必须为8位</param>

Android 平台DES IV 加密解密随笔

好记性不如烂笔头,所以开始写博客了.一方面加深自己的理解,二方面给后面初学者少走弯路,不论难易,有些东西可能理解的不深,欢迎各位高手指导赐教加吐槽! DES加密接触过好多次了,但总容易忘,和服务器交互时,加出来不一致后面能解密成功但是头部是乱码导致小坑了一会,在此记录下来~ 根据百度百科和自己的理解,DES是一个基于56位密钥的对称的加密算法,就是两边的密钥需要一致,在此就不考虑为什么不用安全性更高的AES或者采用非对称加密方法,比如RSA等等:关于密钥空间小,可以使用DES的派生算法3DES来

Java android DES+Base64加密解密

服务器与客户端加密解密传输, 中间遇到各种坑,客户端无论用AES还是DES解密时都会出现错误,后来才看到好多人说要用AES/DES加完密后还要BASE64加密,照做时发现android和java的Base64加密解密不一致,只好不使用java或android的Base64重新在网上找了一个,感谢以下两位提供的代码,两段分别转载自以下博客. https://www.cnblogs.com/xuhaiqing/archive/2013/03/12/2955837.html https://www.c

JAVA使用DES加密算法加密解密

程序中使用了.properties文件作为参数配置文档,好处是灵活配置各项参数 一旦对数据库的一些参数进行了配置,势必涉及数据库的IP,端口,用户名和密码 properties文件全是unicode编码明文存储,程序打包交付后,其他人能够很容易使用解压软件打开jar查看你的.properties文件 所以一些敏感变量需要加密处理 首先需要了解一些基本的加密算法,比如MD5,比如DES和RSA MD5是一种不可逆的加密算法,使用散列后特征码的方式表现需要加密的字符或者文件,常用在系统登陆的密码比对

C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)

一:异或^简单加解密(数字类型) 1:原理: 异或用于比较两个二进制数的相应位,在执行按位"异或"运算时,如果两个二进制数的相应位都为1或者都为0,则返回0;如果两个二进制数的相应位其中一个为1另一个为0,则返回1. //对数字加密 int P_int_Num, P_int_Key;//定义两个值类型变量 string Encryptstr = (P_int_Num ^ P_int_Key).ToString();//加密数值 //对数字解密 int P_int_Key, P_int_

des加密解密——java加密,php解密

最近在做项目中,遇到des加密解密的问题. 场景是安卓app端用des加密,php这边需要解密.之前没有接触过des这种加密解密算法,但想着肯定会有demo.因此百度,搜了代码来用.网上代码也是鱼龙混杂,好不容易测试在php这边测试加密和解密成功了.为确保安卓app端提交过来的加密参数能够解密出来,给定安卓人员一个字符串,让他们把des加密后的字符串给我,在php这边解密.结果一看,加密出来的字符串跟我这边加密出来的结果不一致,自然是解密不出来. 要来java的des算法代码,研究加密的过程,其

各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)

普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语言时这类可逆函数非常难搞定.所以这时尽量使用AES DES RC4 Rabbit TripleDes这些方法. 包含超时的加密解密函数 1 /** 2 * 加密 3 * @param string $string 要加密或解密的字符串 4 * @param string $operation 加密 '' 解密 DECODE 5 * @param string $key 密钥

加密解密大汇总

在项目开发中,出于系统安全考虑,我们总会想到使用加密解密进行处理.首先保证的一点就是数据被窃取后,不能使其正常阅读.其次,就是防止接口随意调用. (PS:鄙人目前就想到了这两点好处,如果还有什么优点,欢迎给位补充o(^▽^)o) 接下来就说几个常用的加密算法:DES加密算法,AES加密算法,RSA加密算法,Base64加密算法,MD5加密算法,SHA1加密算法 1.DES加密算法 加密方式---- 使用异或,置换,代换,移位四种基本运算进行16轮循环加密而成. 共分为一般加密和三重加密>> D

C# UrlEngine(加密/解密)

URL是一种类DES的加密/解密算法 URLEncode主要是把Not ASC字符以及特殊字符 以%X / Hex处理链接后返回新的字符串. public static string UrlEncode(string URIstring, Encoding URIEncoding) { StringBuilder str = new StringBuilder(); byte[] buf = URIEncoding.GetBytes(URIstring); for (int i = 0; i <