判斷一個字符串是否被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有所幫助。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM