php端实现 DES+BASE64 解密

什么是Base64 格式字符串?php

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

因此必定要注意 字符串是没有空格、用+代替空格。 同url网址传递后,每每+被替换成了空格,若是要解密 url获取到的加密字符串,须要替换空格; this

/* 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 加密。url

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

因此用 openssl_decrypt 解密以前,用 base_decode 字符串。ip

相关文章
相关标签/搜索