判断一个字符串是否被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