Java 中的 base64.decode

Mohammad Irfan 2023年10月12日
  1. Base64 類的編解碼方法
  2. Java 中的 Base64 編碼
  3. Java 中的 Base64 解碼
  4. 在 Java 中使用 Apache Commons Codec Library 進行編碼和解碼
  5. Java 中的 URL 編碼和解碼
  6. Java 中的 Mime 編碼和解碼
Java 中的 base64.decode

本教程介紹了 Java 中的 base64.decode 是什麼,以及如何使用它對 Java 中的編碼資料進行解碼。

Java 在其 Java 8 版本中新增了一個新類 Base64。這個類有幾個巢狀的類,如編碼器和解碼器,可用於編碼和解碼資料。它允許多種編碼功能,例如基本編碼、URL 編碼、MIME 編碼和對每種編碼的解碼支援。你可以在下面看到每個目的的方法。

Base64 類的編解碼方法

// Basic Encoding Decoding
public static Base64.Decoder getDecoder() public static Base64
    .Encoder getEncoder()

    // Url Encoding Decoding
    public static Base64.Decoder getUrlDecoder() public static Base64
    .Encoder getUrlEncoder()

    // Mime Encoding Decoding
    public static Base64.Decoder getMimeDecoder() public static Base64.Encoder getMimeEncoder()

在本文中,我們將學習編碼和解碼基本和其他型別的編碼。讓我們從一些例子開始。

Java 中的 Base64 編碼

這是一個基本的編碼示例。Java 提供了 getEncoder() 方法來編碼資料。請參閱下面的示例。

import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.Encoder;
public class SimpleTesting {
  public static void main(String[] args) throws UnsupportedEncodingException {
    String msg = "This is confidential";
    System.out.println("Message  before encoding: " + msg);
    byte[] bytes = msg.getBytes("UTF-8");
    Encoder encoder = Base64.getEncoder();
    String encoded = encoder.encodeToString(bytes);
    System.out.println("Message after encoding: " + encoded);
  }
}

輸出:

Message  before encoding: This is confidential
Message after encoding: VGhpcyBpcyBjb25maWRlbnRpYWw=

Java 中的 Base64 解碼

在這裡,我們使用了 getDecoder() 方法來解碼編碼資料。此方法以位元組為單位返回結果。因此,為了驗證,我們使用了一個 String 建構函式將資料返回到 String 中。

import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.Encoder;
public class SimpleTesting {
  public static void main(String[] args) throws UnsupportedEncodingException {
    String msg = "This is confidential";
    System.out.println("Message  before encoding: " + msg);
    byte[] bytes = msg.getBytes("UTF-8");
    Encoder encoder = Base64.getEncoder();
    String encoded = encoder.encodeToString(bytes);
    System.out.println("Message after encoding: " + encoded);
    byte[] decoded = Base64.getDecoder().decode(encoded);
    String decodedMsg = new String(decoded);
    System.out.println("Decoded Message " + decodedMsg);
  }
}

輸出:

Message before encoding: This is confidential
Message after encoding: VGhpcyBpcyBjb25maWRlbnRpYWw=
Decoded Message This is confidential

在 Java 中使用 Apache Commons Codec Library 進行編碼和解碼

這是在 Java 中編碼和解碼資料的另一種解決方案。在這裡,我們使用編解碼器庫及其 Base64 類。它提供了 encodeBase64() 方法,該方法返回可以使用 decodeBase64() 方法進一步解碼的編碼字串。請參閱下面的示例。

import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Base64;

public class SimpleTesting {
  public static void main(String[] args) throws UnsupportedEncodingException {
    String msg = "This is confidential";
    System.out.println("Message  before encoding: " + msg);
    byte[] bytes = msg.getBytes("UTF-8");
    String encoding = new String(Base64.encodeBase64(bytes));
    System.out.println("---------After Encoding-----------");
    System.out.println(encoding);

    // Decoding
    String decoding = new String(Base64.decodeBase64(encoding));
    System.out.println("---------After Decoding----------");
    System.out.println(decoding);
  }
}

輸出:

Message  before encoding: This is confidential
---------After Encoding-----------
VGhpcyBpcyBjb25maWRlbnRpYWw=
---------After Decoding----------
This is confidential

Java 中的 URL 編碼和解碼

正如我們在開始時所說的,Java Base64 也可用於編碼和解碼 URL。因此,在此示例中,我們使用 getUrlEncoder() 方法進行編碼,並使用 getUrlDecoder() 方法對 URL 進行解碼。請參閱下面的示例。

import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.Encoder;
public class SimpleTesting {
  public static void main(String[] args) throws UnsupportedEncodingException {
    String url = "https://www.delftstack.com/";
    System.out.println("Message  before encoding: " + url);
    byte[] bytes = url.getBytes("UTF-8");
    Encoder encoder = Base64.getUrlEncoder();
    String encoded = encoder.encodeToString(bytes);
    System.out.println("Message after encoding: " + encoded);
    // Decoding
    String decoding = new String(Base64.getUrlDecoder().decode(encoded));
    System.out.println("---------After Decoding----------");
    System.out.println(decoding);
  }
}

輸出:

Message  before encoding: https://www.delftstack.com/
Message after encoding: aHR0cHM6Ly93d3cuZGVsZnRzdGFjay5jb20v
---------After Decoding----------
https://www.delftstack.com/

Java 中的 Mime 編碼和解碼

為了對 mime 資料進行編碼,Java 提供了 getMimeEncoder() 方法,該方法返回編碼的位元組並解碼 Java 提供的 getMimeDecoder() 方法。請參閱下面的示例。

import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.Encoder;

public class SimpleTesting {
  public static void main(String[] args) throws UnsupportedEncodingException {
    String msg = "This is \n confidential \n file";
    System.out.println("Message  before encoding: " + msg);
    byte[] bytes = msg.getBytes("UTF-8");
    Encoder encoder = Base64.getMimeEncoder();
    String encoded = encoder.encodeToString(bytes);
    System.out.println("Message after encoding: " + encoded);
    // Decoding
    String decoding = new String(Base64.getMimeDecoder().decode(encoded));
    System.out.println("---------After Decoding----------");
    System.out.println(decoding);
  }
}

輸出:

Message  before encoding: This is 
 confidential 
 file
Message after encoding: VGhpcyBpcyAKIGNvbmZpZGVudGlhbCAKIGZpbGU=
---------After Decoding----------
This is 
 confidential 
 file