用記事本打開
exe
疲恢、jpg
、
一猫十、Base64是什么
Base64是一種用64個字符來表示任意二進制數(shù)據(jù)的方法。
二呆盖、Base64編碼與解碼
-
所有的數(shù)據(jù)都能被編碼為只用64+1個字符就能表示的文本
64個字符指的是將
[A-Za-z0-9+/]
依次排序拖云,以0-63為其序號
base64對照表.png
1個字符指的是=
號,其作用是補位用的应又。 -
Base64編碼
其技術原理呢是將數(shù)據(jù)轉化為二進制宙项,每3個字節(jié)一組,1字節(jié)=8bit株扛,那么一共是
3x8=24
bit尤筐,將最大的序列號63轉化為二進制是111111
邑贴,剛好6個bit,正好劃為4組:
這樣我們得到4個數(shù)字作為索引叔磷,然后查表拢驾,獲得相應的4個字符,就是編碼后的字符串改基。
Base64編碼會把3字節(jié)的二進制數(shù)據(jù)編碼為4字節(jié)的文本數(shù)據(jù)繁疤,雖然長度增加33%,但是編碼后的文本數(shù)據(jù)可以在郵件正文秕狰、網(wǎng)頁等直接顯示稠腊。
但是有一個問題來了,如果要編碼的二進制數(shù)據(jù)不是3的倍數(shù)鸣哀,最后會剩下1個或2個字節(jié)怎么辦架忌?
這時候“1”字符的作用就體現(xiàn)出來了,Base64用\x00
字節(jié)(二進制00000000)在末尾補足后我衬,再在編碼的末尾加上1個或2個=
號叹放,表示補了多少字節(jié),解碼的時候挠羔,會自動去掉井仰。 -
Base64解碼
將上面的倒著解回去就行了
最新的瀏覽器提供了自動生成base64的方法atob
和btob
btoa('a123')
// => "YTEyMw=="
atob('YTEyMw==')
// => "a123"
三、Base64的應用
-
密鑰
對證書來說破加,特別是根證書俱恶,一般都是作Base64編碼的,因為它要在網(wǎng)上被許多人下載范舀。電子郵件的附件一般也作Base64編碼的合是,因為一個附件數(shù)據(jù)往往是有不可見字符的。 -
密文
Base64經(jīng)常用于一些JS加密锭环,有些JS生成的cookie就是經(jīng)過Base64編碼的聪全,有些JS生成返回的數(shù)據(jù)也是Base64。 -
圖片
直接上例子:
抓百度網(wǎng)盤標題的時候田藐,發(fā)現(xiàn)標題是圖片荔烧,直接審查元素,發(fā)現(xiàn)是BASE64生成的
標題
base64生成
-
普通數(shù)據(jù)
有些把賬號密碼拿去Base64編碼汽久,雖然沒什么用,懂得人一眼就能看出來踊餐,但是編碼后的數(shù)據(jù)景醇,還是會造成一些干擾,對不懂的人更會造成極大困惑吝岭。