Java 中的 base64.decode
Mohammad Irfan
2023年10月12日
- Base64 類的編解碼方法
- Java 中的 Base64 編碼
- Java 中的 Base64 解碼
- 在 Java 中使用 Apache Commons Codec Library 進行編碼和解碼
- Java 中的 URL 編碼和解碼
- Java 中的 Mime 編碼和解碼
本教程介紹了 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