PHP基于标准的CBC模式的DES加密算法
来源:互联网 发布:怎么样配衣服 知乎 编辑:程序博客网 时间:2024/05/18 01:11
内容来自 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阅读全文
1 0
- PHP基于标准的CBC模式的DES加密算法
- CBC模式的DES加密算法(加密字符串、加密文件)
- DES CBC模式加密算法php与java互通
- php的DES加密算法
- JAVA实现DES的ECB/CBC的加密算法
- DES加密算法Delphi与C#互通(CBC加密模式)
- PHP与.NET一致的DES(CBC)算法
- Android DES加密的CBC和ECB加密解密模式
- 3DES、DES的CBC、ECB
- TEA加密算法与分组密码的ECB、CBC模式选定
- 基于Feistel网络的DES和3DES加密算法
- 基于PHP标准库的观察者模式
- DES加密算法的原理
- DES加密算法的原理
- DES加密算法的原理
- DES加密算法的实现
- C#的DES加密算法
- 3DES 的加密算法
- Javascript Dom编程艺术读书笔记(三)
- 项目开发总结之通用适配器
- 错过
- coding
- 本地CentOS 7 下 安装 LEMP 服务(nginx+MariaDB+php)
- PHP基于标准的CBC模式的DES加密算法
- UltraEdit查看class的jdk版本
- 使用angular创建一个service
- [cocos2dx_Lua]quick中的节点帧事件
- 一个疏忽导致温度曲线不能显示
- ceph 存储池PG查看和PG存放OSD位置
- 文章标题
- java utf-8 转 gbk / gbk 转 utf-8
- 购物车