1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP基于标准的CBC模式的DES加密算法

作者:用户 来源:互联网 时间:2017-11-30 09:46:23

php算法标准加密des模式基于CBC

PHP基于标准的CBC模式的DES加密算法 - 摘要: 本文讲的是PHP基于标准的CBC模式的DES加密算法, 内容来自 https://xgs888.top/post/view?id=32 a)采用标准的CBC模式的DES加密算法; b)密钥长度为56位,唯一密钥; c)数据采用初始向量(VI)做互斥运算,VI唯一初始向量; d)所有协议数


内容来自 https://xgs888.top/post/view?id=32


a)采用标准的CBC模式的DES加密算法;

b)密钥长度为56位,唯一密钥;

c)数据采用初始向量(VI)做互斥运算,VI唯一初始向量;

d)所有协议数据的明文需要在尾部加上原始数据长度,再加上“ABCD”4个字母,然后按64位进行分组,不足64位的以“/0”补足,分组后的明文采用统一的加密方式生成密文,即采用 “明文+密钥+初始化向量(VI)”。

e) 加密结果先base64_encode 然后urlencode加密

<?phpheader("Content-type:text/html;charset=utf-8");//加密function encrypt($str , $key , $iv) {	return @mcrypt_cbc(MCRYPT_DES, $key, $str, MCRYPT_ENCRYPT, $iv );}//解密function decrypt($strBin , $key = '12345678',$iv = '12345678'){    $strBin = base64_decode(urldecode($strBin));//解密的时候要先urldecode 在base64和加密相反	return @mcrypt_cbc( MCRYPT_DES, $key, $strBin, MCRYPT_DECRYPT, $iv );} //发送http 请求function postUrl($url , $data){	$ch = curl_init();     	curl_setopt($ch, CURLOPT_URL, $url);    	curl_setopt($ch, CURLOPT_POST, true);     	curl_setopt($ch, CURLOPT_POSTFIELDS, $data);    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);     	$handles = curl_exec($ch);     	curl_close($ch);	return $handles;}//这是在尾部添加的数据;如果有错误的话会使解密的数据和加密的数据开头有乱码function getnbytes($data,$key = '12345678',$iv = '12345678'){    $len = mb_strlen($data);    $data = $data.$len."ABCD";    //不够补0    $mod = 8-$len%8;    //return $mod;    for ($i=0; $i < $mod; $i++) {         # code...        $data.="/0";    }   // return $data;    $data = encrypt($data , $key , $iv);    return urlencode(base64_encode($data));}


之前还遇到一个需求是要int大端字节

a)所有协议数据的明文需要在尾部加上原始数据长度(int大端字节数4字节,协议数据的长度),再加上“ABCD”4个字母,然后按64位进行分组,不足64位的以“/0”补足,分组后的明文采用统一的加密方式生成密文,即采用 “明文+密钥+初始化向量(VI)”。

代码作出相应的更改 

请参考https://xgs888.top/post/view?id=32

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , 算法 , 标准 , 加密 , des , 模式 , 基于 CBC ,以便于您获取更多的相关知识。