public class Base64 { static { for (int i = 0; i < 128; i++) { for (int i = 'A'; i <= 'Z'; i++) { for (int i = 'a'; i <= 'z'; i++) { for (int i = '0'; i <= '9'; i++) { decodingTable['+'] = 62; public static byte[] encode(byte[] data) { int modulus = data.length % 3; if (modulus == 0) { int dataLength = (data.length - modulus); for (int i = 0, j = 0; i < dataLength; i += 3, j += 4) { bytes[j] = encodingTable[(a1 >>> 2) & 0x3f]; int b1; switch (modulus) { case 1: bytes[bytes.length - 4] = encodingTable[b1]; break; case 2: b1 = (d1 >>> 2) & 0x3f; bytes[bytes.length - 4] = encodingTable[b1]; break; return bytes; public static byte[] decode(byte[] data) { data = discardNonBase64Bytes(data); if (data[data.length - 2] == '=') { for (int i = 0, j = 0; i < (data.length - 4); i += 4, j += 3) { bytes[j] = (byte) ((b1 << 2) | (b2 >> 4)); if (data[data.length - 2] == '=') { bytes[bytes.length - 1] = (byte) ((b1 << 2) | (b2 >> 4)); bytes[bytes.length - 2] = (byte) ((b1 << 2) | (b2 >> 4)); bytes[bytes.length - 3] = (byte) ((b1 << 2) | (b2 >> 4)); return bytes; public static byte[] decode(String data) { data = discardNonBase64Chars(data); if (data.charAt(data.length() - 2) == '=') { for (int i = 0, j = 0; i < (data.length() - 4); i += 4, j += 3) { bytes[j] = (byte) ((b1 << 2) | (b2 >> 4)); if (data.charAt(data.length() - 2) == '=') { bytes[bytes.length - 1] = (byte) ((b1 << 2) | (b2 >> 4)); bytes[bytes.length - 2] = (byte) ((b1 << 2) | (b2 >> 4)); bytes[bytes.length - 3] = (byte) ((b1 << 2) | (b2 >> 4)); return bytes; private static byte[] discardNonBase64Bytes(byte[] data) { for (int i = 0; i < data.length; i++) { byte[] newData = new byte[bytesCopied]; System.arraycopy(temp, 0, newData, 0, bytesCopied); return newData; private static String discardNonBase64Chars(String data) { int length = data.length(); for (int i = 0; i < length; i++) { return sb.toString(); private static boolean isValidBase64Byte(byte b) { return true; public static void main(String[] args) { |
藏家389 2025-03-23
藏家389 2025-03-23
藏家389 2025-03-23
藏家389 2025-03-23
藏家389 2025-03-23
藏家389 2025-03-23
藏家389 2025-03-23
藏家389 2025-03-23
藏家389 2025-03-23
藏家389 2025-03-23