import java.util.Base64; public class Base64Utils { public static String encode(byte[] s){ return Base64.getEncoder().encodeToString(s); } public static byte[] decode(String s){ return Base64.getDecoder().decode(s); } public static byte[] decode(byte[] s){ return Base64.getDecoder().decode(s); } public static String urlSafeEncode(byte[] a){ String s = encode(a); char[] newStr = new char[s.length()]; int i = 0; for (char c : s.toCharArray()) { if (c != '='){ char newc; if (c =='+'){ newc = '-'; }else if (c == '/'){ newc = '_'; }else{ newc = c; } newStr[i]=newc; i++; } } return new String(newStr,0,i); } public static byte[] urlSafeDecode(String s){ int mod = s.length()%4; if (mod>0){ s = s + "=".repeat(4 - mod); } char[] newStr = new char[s.length()]; int i = 0; for (char c : s.toCharArray()) { char newc; if (c =='-'){ newc = '+'; }else if (c == '_'){ newc = '/'; }else{ newc = c; } newStr[i]=newc; i++; } String normal64 = new String(newStr); return decode(normal64); } }
11-28
09-13