檢查字串是否是 Base64 編碼的
一、簡介
在Java程式設計中,我們經常涉及資料編碼和解碼。此外,Base64 編碼很流行,用於將二進位資料轉換為 ASCII 文字格式。
在本教程中,我們將發現可用於驗證給定字串是否採用 Java 進行 Base64 編碼的技術。
2.了解Base64編碼
Base64 是一種二進位到文字的編碼方案,可將二進位資料編碼為 ASCII 字串格式。
每組 3 個位元組對應 4 個字符,由於資料將透過文字協定發送,因此通訊過程安全。
3.使用Base64.getDecoder( ).decode ()
Java 在[java.util](https://docs.oracle.com/javase/8/docs/api/java/util/package-summary.html)
套件中提供了用於 Base64 編碼和解碼任務的函式庫。此外,最常用的類別是Base64
類,它是 Java 8 的一部分。
讓我們示範如何使用Base64
類別來檢查字串是否是 Base64 編碼的:
@Test
public void givenBase64EncodedString_whenDecoding_thenNoException() {
try {
Base64.getDecoder().decode("SGVsbG8gd29ybGQ=");
assertTrue(true);
} catch (IllegalArgumentException e) {
fail("Unexpected exception: " + e.getMessage());
}
}
此測試函數應用Base64.getDecoder.decode
()
方法來解碼 Base64 編碼的字串SGVsbG8gd29ybGQ
。
如果成功,則斷言assertTrue
(true)
,表示該字串是 Base64 編碼的。如果發生意外異常(捕獲IllegalArgumentException
),則測試失敗。
@Test
public void givenNonBase64String_whenDecoding_thenCatchException() {
try {
Base64.getDecoder().decode("Hello world!");
fail("Expected IllegalArgumentException was not thrown");
} catch (IllegalArgumentException e) {
assertTrue(true);
}
}
與上一個測試方法相同,本次使用Base64.getDecoder.decode
()
方法來解碼非 Base64 編碼的字串Hello World! 。
如果測試拋出預期的 ( IllegalArgumentException
) ,則測試斷言assertTrue
(true)
。否則,測試失敗。
4.使用正規表示式
另一方面,也可以考慮基於正規表示式的方法進行Base64編碼驗證。簡單地說,我們可以使用一個模式並將其與所需的字串進行匹配。
讓我們看看如何實現這種方法:
@Test
public void givenString_whenOperatingRegex_thenCheckIfItIsBase64Encoded() {
Pattern BASE64_PATTERN = Pattern.compile(
"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
);
assertTrue(BASE64_PATTERN.matcher("SGVsbG8gd29ybGQ=").matches());
}
在此測試方法中,我們使用Pattern.compile()
方法定義一個名為BASE64_PATTERN
的正規表示式Pattern
,以確保給定的字串符合 Base64 編碼格式。之後,我們建立一個Matcher
對象,用於將輸入字串與定義的模式進行匹配。 如果整個字串匹配,則傳回true;否則,返回 false。
5. 結論
綜上所述,本文深入探討了幾種用於 Base64 編碼驗證的方法,例如Base64.getDecoder(
).decode
()
和 regex ,服務於為 Java 編碼驗證編寫器系統建立靈活性的總體目的。
與往常一樣,範例的原始程式碼可在 GitHub 上取得。