日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

Base64編碼解碼算是網(wǎng)絡(luò)安全領(lǐng)域的很小而且很簡單的一個(gè)知識(shí)點(diǎn)了,雖然簡單但是應(yīng)用場景卻極其廣泛,可以這樣說,開發(fā)者要是不懂Base64,基本上可以告別程序員生涯了。這篇文章從原理入手,并給出JAVA的Base64實(shí)現(xiàn)。方便你掌握Base64。

一、Base64由來

很早之前,電子郵件剛剛問世,那時(shí)候消息的傳遞都是英文,后來中國開通了互聯(lián)網(wǎng)之后,對(duì)郵件的使用量也大量增加,這時(shí)候電子郵件就有了中文的需求。但是中文在傳輸?shù)臅r(shí)候不能被有效地處理,這時(shí)候Base就出來了,Base64通過對(duì)這些中文進(jìn)行編碼,轉(zhuǎn)化為服務(wù)器和網(wǎng)關(guān)能夠識(shí)別的數(shù)據(jù)。這時(shí)候就能夠使用電子郵件有效地傳輸了。

上面的這個(gè)例子不是說Base64專門為電子郵件而生的,從其誕生之初,就開始在各大領(lǐng)域有了廣泛的應(yīng)用。比如說網(wǎng)絡(luò)上傳遞圖片,我們可以Base64先對(duì)圖片進(jìn)行處理,然后就可以有效的傳輸了。

OK,我們大致知道其用途,然后我們就好好的分析一下他的原理,到底是如何對(duì)這些數(shù)據(jù)進(jìn)行編碼的。

二、Base64原理

1、Base64編碼

Base64的原理超級(jí)簡單,相信我們都知道ASCII 編碼,從A-Z、a-z、0-9和一些其他的特殊字符,這些字符都有唯一的一個(gè)數(shù)字來表示。比如說a是97,A是65。我們來截取一部分圖看一下:

一文徹底看懂Base64原理(并使用java實(shí)現(xiàn))

 

同理Base64也有這樣一套編碼。范圍是”A-Z“、”a-z“、”0-9“、”+“、”/“一共64個(gè)字符。我們給出一個(gè)表格來看一下,這個(gè)比ASCII編碼要簡單多了,只有64個(gè)。

一文徹底看懂Base64原理(并使用java實(shí)現(xiàn))

 

由于索引是從0開始,所以最后的索引是63。在編碼的時(shí)候Base64就是通過上面的進(jìn)行轉(zhuǎn)換編碼的。下面我們就來看看Base64編碼的原理。

2、基本原理

比如說有一封郵件,我們想要對(duì)其使用Base64進(jìn)行編碼。怎么辦呢?基本步驟如下:

(1)對(duì)郵件的數(shù)據(jù)進(jìn)行切分,每三個(gè)字節(jié)一組,一共24個(gè)bit。

(2)對(duì)切分后的數(shù)據(jù)重組,24個(gè)bit重組為4組,每組6個(gè)bit。

(3)對(duì)重組后的數(shù)據(jù)處理,每組最前面添加兩個(gè)“0”,構(gòu)成每組8個(gè)bit。此時(shí)一共32個(gè)bit。

(4)根據(jù)Base64編碼表,獲取相應(yīng)的編碼值。

此時(shí)一封完整的郵件,被切分重組處理之后就變成了Base64編碼了。基本原理其實(shí)很簡單。不過你不理解也沒關(guān)系,我們直接上個(gè)實(shí)例來解釋一下。

3、實(shí)例驗(yàn)證

比如說電子郵件里面出現(xiàn)了三個(gè)字母sky。我們要對(duì)這個(gè)三個(gè)字符使用Base64進(jìn)行編碼。

(1)對(duì)郵件的數(shù)據(jù)進(jìn)行切分,每三個(gè)字節(jié)一組,一共24個(gè)bit

一文徹底看懂Base64原理(并使用java實(shí)現(xiàn))

 

(2)對(duì)切分后的數(shù)據(jù)重組,24個(gè)bit重組為4組,每組6個(gè)bit

一文徹底看懂Base64原理(并使用java實(shí)現(xiàn))

 

(3)對(duì)重組后的數(shù)據(jù)處理,每組最前面添加兩個(gè)“0”,構(gòu)成每組8個(gè)bit。由于在最前面添加的0,所以對(duì)數(shù)值不構(gòu)成影響。

(4)根據(jù)Base64編碼表,獲取相應(yīng)的編碼值

一文徹底看懂Base64原理(并使用java實(shí)現(xiàn))

 

(5)完成編碼的轉(zhuǎn)換

一文徹底看懂Base64原理(并使用java實(shí)現(xiàn))

 

到這我們基本上就是實(shí)現(xiàn)了Base64編碼機(jī)制從sky到c2t5的轉(zhuǎn)換。

有些地方需要我們?nèi)プ⒁庖幌拢?/strong>

(1)在第三步中,最前面添加了兩個(gè)0,所以最終編碼之后要比之前多出三分之一的大小。

(2)上面的例子中,我們使用的是ASCII編碼,但是如果我們使用UTF-8,對(duì)應(yīng)Base64編碼的結(jié)果是不一樣的。

(3)Base64只是進(jìn)行了編碼,方便數(shù)據(jù)的傳輸而已。這可不是加密。

原理也搞清楚了,現(xiàn)在我們就實(shí)現(xiàn)一下。

三、代碼實(shí)現(xiàn)

你可以自己去實(shí)現(xiàn)一個(gè)編碼解碼的完整過程,但是java已經(jīng)為我們封裝好了,我們直接只用別人造好的輪子多好。不管是自己寫還是使用別人的,原理搞清楚就OK了。

一文徹底看懂Base64原理(并使用java實(shí)現(xiàn))

 

是不是很簡單。其實(shí)java實(shí)現(xiàn)的方式有很多種,其他的還有Commons Codec和Bouncy Castle。實(shí)現(xiàn)的過程和JDK提供的類似,我們只需要導(dǎo)入相應(yīng)的jar包即可。

Base64算法的應(yīng)用場景有E-Mail、密鑰、證書文件等等。這也只是入門,想要深入了解,可以看一些安全有關(guān)的書籍,不過很多都和數(shù)學(xué)有關(guān),看的實(shí)在是難受,曾經(jīng)看過,可惜沒堅(jiān)持住。慚愧,書到用時(shí)方恨少。

OK。有問題還請(qǐng)指正。

分享到:
標(biāo)簽:解碼 編碼 Base64
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績?cè)u(píng)定