什么是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