php base64的实现原理,php端实现 DES+BASE64 解密

什么是Base64 格式字符串?

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。通常是52个大小字母和10个数字,以及+,/两个字符,还有个=用于补缺。

所以一定要注意 字符串是没有空格、用+代替空格。 同url网址传递后,往往+被替换成了空格,如果要解密 url获取到的加密字符串,需要替换空格;/* desc base64 解密算法*/

private function fill8($str){

if(strlen($str) % 8){

$len = strlen($str) + 8 - strlen($str) % 8;

$str = str_pad($str, $len, " ");

}

return $str;

}

public function DesBase64_Decrypt($encrypt_str, $key){

$encrypt_str = substr($encrypt_str, 8);

$encrypt_str = $this->fill8($encrypt_str);

$key = $this->fill8($key);

$cipher = "DES-ECB";

$iv = "";

$original_plaintext = openssl_decrypt(base64_decode($encrypt_str), $cipher, $key ,OPENSSL_NO_PADDING, $iv, $tag);

return base64_decode($original_plaintext);

}

上面代码 功能是解密 一个经过 des-ecb 加密的字符串;

这个加密是增加了一些附加功能的: 加密字符串 = des-ecb 加密后 ,再用 base64 加密。

本算法:des-ecb 加密得到一个 base64字符串,然后再把它 base64 一次。

所以用 openssl_decrypt 解密之前,用 base_decode 字符串。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值