一:思路
判断一个字符串是否为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;