杰瑞科技汇

Java Base64编码解码如何实现?

Java Base64 编码解码指南

Java 8 及更高版本内置了 java.util.Base64 类,提供了标准的 Base64 编码和解码功能,以下是详细的用法说明:

Java Base64编码解码如何实现?-图1
(图片来源网络,侵删)

基本编码和解码

编码示例

import java.util.Base64;
public class Base64Example {
    public static void main(String[] args) {
        String originalString = "Hello, World!";
        // 编码
        String encodedString = Base64.getEncoder().encodeToString(originalString.getBytes());
        System.out.println("编码后: " + encodedString);
        // 解码
        byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
        String decodedString = new String(decodedBytes);
        System.out.println("解码后: " + decodedString);
    }
}

输出结果

编码后: SGVsbG8sIFdvcmxkIQ==
解码后: Hello, World!

URL 安全的 Base64 编码

URL 安全的 Base64 编码使用 和 _ 替代 和 ,并移除填充字符 。

import java.util.Base64;
public class Base64UrlExample {
    public static void main(String[] args) {
        String originalString = "Hello, World!";
        // URL 安全编码
        String encodedString = Base64.getUrlEncoder().encodeToString(originalString.getBytes());
        System.out.println("URL 安全编码后: " + encodedString);
        // URL 安全解码
        byte[] decodedBytes = Base64.getUrlDecoder().decode(encodedString);
        String decodedString = new String(decodedBytes);
        System.out.println("URL 安全解码后: " + decodedString);
    }
}

MIME 友好的 Base64 编码

MIME 编码会每 76 个字符插入一个换行符,适合在电子邮件等 MIME 环境中使用。

import java.util.Base64;
public class Base64MimeExample {
    public static void main(String[] args) {
        String originalString = "This is a very long string that will be encoded using MIME Base64 encoding rules.";
        // MIME 编码
        byte[] encodedBytes = Base64.getMimeEncoder().encode(originalString.getBytes());
        String encodedString = new String(encodedBytes);
        System.out.println("MIME 编码后:\n" + encodedString);
        // MIME 解码
        byte[] decodedBytes = Base64.getMimeDecoder().decode(encodedBytes);
        String decodedString = new String(decodedBytes);
        System.out.println("MIME 解码后: " + decodedString);
    }
}

处理字节数组

import java.util.Base64;
public class Base64ByteArrayExample {
    public static void main(String[] args) {
        byte[] originalBytes = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        // 编码字节数组
        byte[] encodedBytes = Base64.getEncoder().encode(originalBytes);
        System.out.println("编码后的字节数组: " + new String(encodedBytes));
        // 解码字节数组
        byte[] decodedBytes = Base64.getDecoder().decode(encodedBytes);
        System.out.print("解码后的字节数组: ");
        for (byte b : decodedBytes) {
            System.out.print(b + " ");
        }
    }
}

自定义编码器/解码器

import java.util.Base64;
public class Base64CustomExample {
    public static void main(String[] args) {
        String originalString = "Custom Base64 encoding";
        // 创建自定义编码器(可以设置行长度和行分隔符)
        Base64.Encoder encoder = Base64.getMimeEncoder(64, System.lineSeparator().getBytes());
        String encodedString = encoder.encodeToString(originalString.getBytes());
        System.out.println("自定义编码后:\n" + encodedString);
        // 创建自定义解码器
        Base64.Decoder decoder = Base64.getMimeDecoder();
        byte[] decodedBytes = decoder.decode(encodedString);
        String decodedString = new String(decodedBytes);
        System.out.println("自定义解码后: " + decodedString);
    }
}

注意事项

  1. Java 版本要求java.util.Base64 是从 Java 8 开始引入的,更早的版本需要使用第三方库如 Apache Commons Codec。

  2. 性能考虑:对于大量数据,建议直接操作字节数组而不是字符串,以减少编码/解码过程中的内存开销。

    Java Base64编码解码如何实现?-图2
    (图片来源网络,侵删)
  3. 错误处理:解码时如果输入不是有效的 Base64 编码,会抛出 IllegalArgumentException

  4. 填充字符:标准的 Base64 编码使用 作为填充字符,URL 安全版本通常省略填充字符。

  5. 线程安全java.util.Base64 的所有方法都是线程安全的,可以安全地在多线程环境中使用。

涵盖了 Java 中 Base64 编码和解码的主要用法,可以根据具体需求选择合适的编码方式。

Java Base64编码解码如何实现?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇