判斷一個字串是否被Base64加密
阿新 • • 發佈:2018-11-04
例如:
字串: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有所幫助。