例如:
字符串: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的倍數
* =只會出現在字符串最后,可能沒有或者一個等號或者兩個等號
* 字符串長度是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有所幫助。