10.Guava base encoding decoding

1、作用

對一個字符串進行base64或base16算法的編解碼。

2、代碼示例

package com.mzj.guava.io.base64;

import com.google.common.io.BaseEncoding;
import org.junit.Test;

public class BaseEncodingTest {

    @Test
    public void testBase64Encode(){
        BaseEncoding baseEncoding = BaseEncoding.base64();
        System.out.println(baseEncoding.encode("hello".getBytes()));
    }

    @Test
    public void testBase64Decode(){
        BaseEncoding baseEncoding = BaseEncoding.base64();
        System.out.println(new String(baseEncoding.decode("aGVsbG8=")));
    }
}

輸出:

aGVsbG8=

hello

3、base64維基百科

 

Base64是一種基於64個可打印字符來表示二進制數據的表示方法。由於所以每6個比特爲一個單元,對應某個可打印字符。3個字節有24個比特,對應於4個Base64單元,即3個字節可由4個可打印字符來表示。它可用來作爲電子郵件的傳輸編碼。在Base64中的可打印字符包括字母A-Za-z數字0-9,這樣共有62個字符,此外兩個可打印符號在不同的系統中而不同。一些如uuencode的其他編碼方法,和之後BinHex的版本使用不同的64字符集來代表6個二進制數字,但是不被稱爲Base64。

4、使用場合

Base64常用於在通常處理文本數據的場合,表示、傳輸、存儲一些二進制數據,包括MIME電子郵件XML的一些複雜數據。

5、其他說明

我們知道在計算機中的字節共有256個組合,對應就是ascii碼,而ascii碼的128~255之間的值是不可見字符。而在網絡上交換數據時,比如說從A地傳到B地,往往要經過多個路由設備,由於不同的設備對字符的處理方式有一些不同,這樣那些不可見字符就有可能被處理錯誤,這是不利於傳輸的。所以就先把數據先做一個Base64編碼,統統變成可見字符,這樣出錯的可能性就大降低了。

對證書來說,特別是根證書,一般都是作Base64編碼的,因爲它要在網上被許多人下載。電子郵件的附件一般也作Base64編碼的,因爲一個附件數據往往是有不可見字符的。

那麼Base64到底是怎樣編碼的呢?

簡單來說,任何一個數據無非可以看作一個比特流,如01000100010011101100111010111100011001010......那麼我們取6個比特爲一組,計算它的ascii值,得到一個字符,這個字符肯定是可見字符,好,把它對應的字符寫出來,再取6個比特,計算...,如此下去,直到最後,就完成了編碼。

6、擴展閱讀推薦

http://blog.xiayf.cn/2016/01/24/base64-encoding/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章