Java實現(xiàn)
使用java.util.Base64類來實現(xiàn)Base64編碼。
該類是Java8引入的。
String str = "sd";
System.out.println("str:" + str);
// 進行Base64編碼
byte[] bytes = str.getBytes("utf-8");
String encode = Base64.getEncoder().encodeToString(bytes);
System.out.println("encode:" + encode);
// 進行Base64解碼
byte[] bytes1 = Base64.getDecoder().decode(encode);
String decode = new String(bytes1, "utf-8");
System.out.println("decode:" + decode);
輸出:
str:sd
encode:c2Q=
decode:sd
上面就是java實現(xiàn)的代碼,使用起來是很方便的。下面來說說Base64編碼的原理。
Base64編碼
Base64編碼的作用:將字符串轉(zhuǎn)為由64個特定字符組成的編碼,這種編碼方式適用于不支持特定編碼的情況。
詳解
一、
首先來看,原字符串是“sd”。將字符串轉(zhuǎn)為二進制編碼形式。這里是采用utf-8。
s的編碼:115。二進制展示是:01110011。
d的編碼:100。二進制展示是:01100100。
上面的二進制是8個字節(jié)的,由于要轉(zhuǎn)換為64個字符展示的字符串,所以需要以6個字節(jié)作為一個單位來展示。
我們將兩個編碼合并起來:0111001101100100
二、
由于現(xiàn)在是16個字節(jié)(8+8),如果以6個字節(jié)為單位的話,字節(jié)數(shù)量是不夠的。
因此在后面補0:011100110110010000
三、
然后以6個字節(jié)為單位分割該編碼:011100,110110,010000
再轉(zhuǎn)換為十進制表示:28,54,16
四、
根據(jù)下面表格,找到索引對應(yīng)的字符,得到Base64編碼的結(jié)果:c2Q
--圖片來源base64百度百科
五、
通常,編碼結(jié)果不滿4個字符時,會在后面補上=
因此編碼的最終結(jié)果是:c2Q=文章來源:http://www.zghlxwxcb.cn/news/detail-631435.html
既然編碼方式知道了,那么解碼方式也就知道了。這里就不詳細再說了。文章來源地址http://www.zghlxwxcb.cn/news/detail-631435.html
到了這里,關(guān)于Java實現(xiàn)Base64編碼以及原理詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!