一:思路
判断一个字符串是否为base64编码的流程:
步骤 描述
1 将字符串转换为字节数组
2 判断字节数组的长度是否是4的倍数
3 将字节数组的每个字节转换为对应的base64字符
4 判断base64字符是否合法
二:代码
/**
* 判断是否是base64编码
* @param str
* @return
*/
public static boolean isBase64(String str) {
if (str == null || str.trim().length() == 0) {
return false;
} else {
if (str.length() % 4 != 0) {
return false;
}
char[] charA = str.toCharArray();
for (char c : charA) {
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '+' || c == '/' || c == '=') {
continue;
} else {
return false;
}
}
return true;
}
}
三:发现特殊字符无法判断
1.在一次对配置文件数据库用户名和密码加密过程,发现postgres这么去判断都是为true;

2.经过多少测试postgre最后一个字符为任何一个base64相同的字符 postgre[0-9], postgre[a-z] , postgre[A-Z] , postgre[+,/,=] 都会被认为true;




















