原创

Java检验字符串是否有Base64编码

温馨提示:
本文最后更新于 2022年08月27日,已超过 602 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

相信很多使用加密的朋友,都有遇到过解密失败的情况。大多数解密失败的原因都是加密和解密的方式不对等。如果对方在加密,我方加密,那么为了避免Base64解码时异常,可以再解码前先判断一下该字符串是否是Base64编码过,这样就可以避免没有必要的程序错误。

那么我要判断该字符串是否存在base64加密,首先要了解base64加密,对加密的结果分析。那么博主大致总结了下base64编码之后的字符串具有以下特点:

  • 字符串只可能包含A-Z,a-z,0-9,+,/,=字符
  • 字符串长度是4的倍数
  • =只会出现在字符串最后,可能没有或者会有一个等号,也可能有两个等号

正则判断

用正则来判断是否是base64加密,方便快捷。

private static boolean isBase64(String str) {
    String base64Rule = "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$";
    return Pattern.matches(base64Rule, str);
}

循环字符串

当然我们也可以循环字符串,根据上述分析的特点来判断是否是base64加密过的字符串

private static boolean isBase64(String str) {
    if (str == null || str.trm().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;
    }
}

经过上述两个方式来判断一下字符串,就可以得出结果该字符串是否经过base64加密。

正文到此结束
该篇文章的评论功能已被站长关闭
本文目录