//前綴,爲了判斷是否爲加密的字符串,在解密的時候判斷是否爲加密的字符串,不是加密的字符串不進行處理
private static final String BASE_PREFIX = "BASE-";
/** * 判斷是否是 BASE64 編碼 * * @param base64 base64 編碼值 * @return true / false */ public static boolean isBaseEncode(String base64) { return base64 != null && base64.indexOf(BASE_PREFIX) == 0; } /** * 獲取進行 BASE64 編碼後的值 * * @param src 原文 * @return Optional 包裝後的編碼值 */ public static Optional<String> baseEncode(String src) { if (src == null) { return Optional.empty(); } return Optional.of(BASE_PREFIX + Base64.encodeBase64String(src.getBytes())); } /** * 獲取 BASE64 解碼後的值 * * @param base64 編碼後的值 * @return Optional 包裝後的解碼值 */ public static Optional<String> baseDecode(String base64) { if (base64 == null) { return Optional.empty(); } return Optional.of(new String(Base64.decodeBase64(base64.substring(BASE_PREFIX.length())))); }
/** * 判斷加密類型自動解密,如果未加密,直接返回原文 * * @param encrypted 密文 * @return 解密後字符串 */ public static String autoDecrypt(String encrypted) { String src; if (isBaseEncode(encrypted)) { Optional<String> optional = baseDecode(encrypted); src = optional.isPresent() ? optional.get() : null; } else { src = encrypted; } return src; }