首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 實現 Base64 編碼解碼完整指南

     編輯:Java 相關知識

Base64 基礎認知

Base64 是一種將二進制數據轉換為可打印 ASCII 字符的編碼方案,常用於 HTTP 傳輸、郵件附件、URL 參數等場景。它不是加密算法,僅是編碼格式,不提供安全性保障。

核心原理

  • 將每 3 個 8-bit 字節(24 位)重組為 4 個 6-bit 單元
  • 每 6-bit 對應 Base64 字符表中的一個字符(A-Z, a-z, 0-9, +, /)
  • 不足 3 字節時用 = 填充
  • 編碼後體積約增加 33%

標準實現方式(Java 8+ 推薦)

Java 8 引入 java.util.Base64,提供標準、URL 安全、MIME 三種編碼器,請勿再使用 sun.misc.BASE64Encoder 等內部類。

import java.util.Base64;
import java.nio.charset.StandardCharsets;

public class Base64Util {

    private static final Base64.Encoder STANDARD_ENCODER = Base64.getEncoder();
    private static final Base64.Decoder STANDARD_DECODER = Base64.getDecoder();
    private static final Base64.Encoder URL_ENCODER = Base64.getUrlEncoder();
    private static final Base64.Decoder URL_DECODER = Base64.getUrlDecoder();

    /** 標準 Base64 編碼 */
    public static String encode(String input) {
        return STANDARD_ENCODER.encodeToString(input.getBytes(StandardCharsets.UTF_8));
    }

    /** 標準 Base64 解碼 */
    public static String decode(String input) {
        byte[] bytes = STANDARD_DECODER.decode(input);
        return new String(bytes, StandardCharsets.UTF_8);
    }

    /** URL 安全編碼(無填充,+/-/_ 替換) */
    public static String encodeUrlSafe(String input) {
        return URL_ENCODER.withoutPadding().encodeToString(input.getBytes(StandardCharsets.UTF_8));
    }

    /** URL 安全解碼 */
    public static String decodeUrlSafe(String input) {
        byte[] bytes = URL_DECODER.decode(input);
        return new String(bytes, StandardCharsets.UTF_8);
    }

    public static void main(String[] args) {
        String original = "Hello, 中文測試!";
        String encoded = encode(original);
        String decoded = decode(encoded);
        
        System.out.println("原文:" + original);
        System.out.println("標準編碼:" + encoded);
        System.out.println("解碼後:" + decoded);
        System.out.println("URL安全編碼:" + encodeUrlSafe(original));
    }
}

常見變體與應用場景

變體特點適用場景
標準 Base64含 + / =郵件、XML、JSON 傳輸
URL Safe+→-,/→_,無填充URL 參數、Token、Cookie
MIME每 76 字符換行郵件長文本傳輸

最佳實踐建議

  1. 優先使用 java.util.Base64(Java 8+)
  2. URL 傳輸必須使用 URL Safe 變體
  3. 敏感數據請配合 AES 等真正加密算法使用
  4. 大文件建議分塊流式處理,避免 OOM

掌握 Base64 的本質與正確用法,能有效避免傳輸協議兼容性問題,是 Java 開發者必備的基礎技能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved