Base-64是一種用於將二進制數據轉換為ASCII字符集中的可打印字符的編碼方式。它由64個可打印字符組成,包含大小寫字母、數字和兩個符號,其中常見的實現方式有RFC 2045和RFC4648兩種。
一、Base-64編碼原理
Base-64的編碼原理是將3個8位的二進制數(3×8=24)作為一組,然後每組6位(4組就是3×8=24)轉換成一個可打印字符,也就是64個字符中的一位。如果剩餘的二進制數不足3個8位,那麼用0補齊。如果還剩下1個8位的二進制數,那麼用兩個0補齊。如果還剩下2個8位的二進制數,那麼用一個0補齊。
二、Base-64編碼特點
Base-64編碼的特點有以下幾點:
1、Base-64編碼後的數據長度總是能被4整除,長度會比原始數據略長。
1、原始數據:01010101 10101010 01010101 10101101 11111010 2、Base-64編碼後數據:VQrVa9+ 3、長度增加:40%(5個字節變成了8個字節)
2、Base-64編碼只是一種字符轉換方式,不具備加密和解密的功能,只是為了方便數據傳輸。
3、因為用來表示64個字符的編碼只佔用6位,因此可以將Base-64編碼後的數據直接嵌入URL中傳輸,不需要經過URL編碼。
三、Java中的Base-64編解碼實現
在Java中實現Base-64編解碼有兩個主要的類:Base64和Base64.Encoder/Base64.Decoder。其中Base64是一個工具類,提供了幾個靜態方法用於編解碼操作。而Base64.Encoder/Base64.Decoder是JDK8中新增的類,提供了更多的方法和功能。
四、示例代碼
使用Base64編解碼的示例代碼如下:
String originalString = "This is the original string."; System.out.println("Original string: " + originalString); // 編碼 byte[] encodedBytes = Base64.getEncoder().encode(originalString.getBytes()); String encodedString = new String(encodedBytes); System.out.println("Encoded string: " + encodedString); // 解碼 byte[] decodedBytes = Base64.getDecoder().decode(encodedBytes); String decodedString = new String(decodedBytes); System.out.println("Decoded string: " + decodedString);
運行結果如下:
Original string: This is the original string. Encoded string: VGhpcyBpcyB0aGUgb3JpZ2luYWwgc3RyaW5nLg== Decoded string: This is the original string.
五、總結
Base-64編碼是一種將二進制數據轉換為ASCII字符的編碼方式,在Java中可以使用Base64類進行編解碼操作。使用Base-64編碼後的數據長度總是能被4整除,因此可以直接嵌入URL中傳輸,非常方便。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/289214.html