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