package com.nanjing.water.common.security; import com.nanjing.water.common.util.StringUtil; import java.nio.charset.Charset; import java.util.Base64; /** * Base64工具类 * @author linliu * @date 2019-06-14 */ public final class Base64Util { private Base64Util() { throw new IllegalStateException("Utility class"); } private static final String DEFAULT = "utf-8"; /** * base64解码(utf-8编码) * @author linliu * @date 2019-06-14 * @param str 密文字符串 * @return 解码后的明文 */ public static String encode(String str) { return encode(str, DEFAULT); } /** * base64解码 * @author linliu * @date 2019-06-14 * @param str 密文字符串 * @param encoding 编码格式[默认utf-8] * @return 解码后的明文 */ public static String encode(String str, String encoding) { if(StringUtil.isNullOrEmpty(str)) { return ""; } if(StringUtil.isNullOrEmpty(encoding)) { encoding = DEFAULT; } byte[] bytes = str.getBytes(Charset.forName(encoding)); return Base64.getEncoder().encodeToString(bytes); } /** * base64解码(utf-8编码) * @author linliu * @date 2019-06-14 * @param str 密文字符串 * @return 解码后的明文 */ public static String decode(String str) { return decode(str, DEFAULT); } /** * base64解码 * @author linliu * @date 2019-06-14 * @param str 密文字符串 * @param encoding 编码格式[默认utf-8] * @return 解码后的明文 */ public static String decode(String str, String encoding) { if(StringUtil.isNullOrEmpty(str)) { return ""; } if(StringUtil.isNullOrEmpty(encoding)) { encoding = DEFAULT; } byte[] bytes = Base64.getDecoder().decode(str); return new String(bytes, Charset.forName(encoding)); } /** * 二进制流转成base64字符串 * @param buffer 二进制数组 * @return 编码后的base64字符串 */ public static String encodeStream(final byte[] buffer) { return Base64.getEncoder().encodeToString(buffer); } /** * 二进制流转成base64流 * @param buffer 二进制数组 * @return 编码后的base64流 */ public static byte[] encodeToStream(final byte[] buffer) { return Base64.getEncoder().encode(buffer); } /** * base64字符串转成二进制流 * @param str 密文字符串 * @return 解码后的文件流 */ public static byte[] decodeToStream(String str) { try { return Base64.getDecoder().decode(str); } catch (Exception e) { return new byte[0]; } } /** * base64字符串转成二进制流 * @param buffer 密文流 * @return 解码后的文件流 */ public static byte[] decodeToStream(final byte[] buffer) { try { return Base64.getDecoder().decode(buffer); } catch (Exception e) { return new byte[0]; } } }