1. 程式人生 > >判斷一個字串是否被Base64加密

判斷一個字串是否被Base64加密

例如:

字串:RGFqaURhbGlfSmlud2FuQ2hpamk=

首先要知道什麼是Base64加密?就是Base64是怎麼加密的?

Base64編碼是從二進位制到字元的過程,可用於在HTTP環境下傳遞較長的標識資訊

 

至於Base64是怎麼加密的?

看一個簡單的例子:

轉前: s 1 3 先轉成ascii:對應 115 49 51 2進位制: 01110011 00110001 00110011 6個一組(4組) 011100 110011 000100 110011 然後才有後面的 011100 110011 000100 110011 然後計算機是8位8位的存數 6不夠,自動就補兩個高位0了 所有有了 高位補0 科學計算器輸入 00011100 00110011 00000100 00110011 得到 28 51 4 51 查對下照表 c z E z   總結Base64密文有如下特點: * 字串只可能包含A-Z,a-z,0-9,+,/,=字元 
* 字串長度是4的倍數 
* =只會出現在字串最後,可能沒有或者一個等號或者兩個等號   再進一步我們可以通過程式碼進行判斷: 正則判斷
1 private static boolean isBase64(String str) {
2 String base64Pattern = "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$";
3 return Pattern.matches(base64Pattern, str);
4 }

Java程式碼判斷

 1 private static boolean isBase64(String str) {
 2     if (str == null || str.trm().length() == 0) {
3 return false; 4 } else { 5 if (str.length() % 4 != 0) { 6 return false; 7 } 8 9 char[] strChars = str.toCharArray(); 10 for (char c:strChars) { 11 if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')
12 || c == '+' || c == '/' || c == '=') { 13 continue; 14 } else { 15 return false; 16 } 17 } 18 return true; 19 } 20 }

PHP程式碼判斷

$s = "RGFqaURhbGlfSmlud2FuQ2hpamk=";
 
if ($s == base64_encode(base64_decode($s))) {
echo 'yes';
}else{
echo 'no';

希望對大家理解Base64有所幫助。