新聞中心
Base64 解決了什么問題
假如我們要在網(wǎng)絡(luò)中傳輸下面的問題:

大興安嶺網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。創(chuàng)新互聯(lián)2013年至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
你好 小朋友
我是磚家
你是誰?
這段文本中包含了空格、換行、回車等不可見字符,在網(wǎng)絡(luò)傳輸中,各個設(shè)備對不可見字符處理機(jī)制可能不同,會存在信息傳輸錯誤的情況。此時我們就需要一種編碼機(jī)制,把不可見字符統(tǒng)統(tǒng)轉(zhuǎn)成可見字符。
Base64 編碼原理
接下來我們通過將 abcd二字轉(zhuǎn)為 Base64 編碼,來了解下它的原理。
- 把字符三三分組,不夠時通過 0 補(bǔ)齊。比如abc?三個字符歸一組,d? 不夠三位,通過0? 補(bǔ)齊為d00。
- 把字符轉(zhuǎn)換成二進(jìn)制 ASCII 編碼。
- 把轉(zhuǎn)換后的二進(jìn)制,每六位分隔開。
Q:為什么第一步需要分三個字符一組?
A:因為 ASCII 碼每個字符是 8 位二進(jìn)制,3 * 8 = 24。正好可以被第三步拆分為 4 個 6 位二進(jìn)制,4 * 6 = 24。
- 6 位二進(jìn)制能代表0-63,我們有一個彩虹表,可以將 0-63 分別對應(yīng)一個字符,彩虹表如下:
通過彩虹表,我們可以將每 6 位分割后的二進(jìn)制做一次轉(zhuǎn)換。
需要注意的是,凡是補(bǔ)位產(chǎn)生的 0,需要用 = 來表示。所以最后的兩位都是 =。
最后 abcd 轉(zhuǎn)換為 Base64 編碼后為 YWJjZA==,整體原理還是比較簡單的,不涉及到高深的算法。
Base64 周邊
- 由于Base64? 轉(zhuǎn)碼后會包含+/=?字符,在 URL 不能正常傳輸。所以有一種 URL 友好型的 Base64 編碼,它存在使用_-?來代替+/?,并且不在末尾追加=。
- Base32、Base16 的原理和 Base64 基本一致。
- Base64 并不適合加密,因為解密太簡單了。
- 漢字通過gb2312、utf-8、gbk?編碼后,即可轉(zhuǎn)成二進(jìn)制處理。這里借用網(wǎng)上的一個圖片說明:
Base58 與 Base58Check
Base58 是比特幣在生成錢包地址時使用的一種編碼形式。它和 Base64 的主要區(qū)別是去掉了肉眼容易看錯的字符 0(零)、O(大寫字母 O)、I(大寫字母 i)、l(小寫字母 L)和幾個影響雙擊選擇的字符:/ 和 + 這種編碼的目的比較簡單,就是防止在轉(zhuǎn)賬時,看錯賬號,轉(zhuǎn)錯賬。Base58 的原理更簡單一些,只涉及到進(jìn)制的轉(zhuǎn)換,大致步驟如下:
- 將字符轉(zhuǎn)成 ASCII 碼
- 將 ASCII 碼轉(zhuǎn)換成 58 進(jìn)制
- 通過彩虹表映射即可
比如 abcd轉(zhuǎn)換:
- 轉(zhuǎn)成 ASCII 碼 97-98-99-100
- 轉(zhuǎn)換成 58 進(jìn)制 3-28-21-49-5-22
- 通過如下彩虹表映射為 3VNr6P
Base58Check 編碼,顧名思義是可以對 Base58 編碼進(jìn)行檢查。比如我在傳輸 qH912cvztx編碼時,如果網(wǎng)絡(luò)異常等各種原因,導(dǎo)致數(shù)據(jù)錯亂或丟失,接收方要能夠識別出來數(shù)據(jù)有問題。Base58Check 編碼基本原理如下:
- 在 data 前面添加一個版本標(biāo)識 prefix,用來識別編碼的數(shù)據(jù)類型,比如比特幣地址的前綴是 0(十六進(jìn)制是 0x00)。
- 通過 hash 算法計算prefix + data?的 hash 值:SHA256(prefix + data)。
- 將生成的 hash 值截斷為前四位,拼接到后面prefix + data + 4 位 hash。
- 將上一步生成的結(jié)果進(jìn)行 Base58 編碼計算,得到最終結(jié)果。
網(wǎng)站標(biāo)題:Base64編碼原來這么簡單,你知道嗎?
網(wǎng)站鏈接:http://www.5511xx.com/article/dhsdcds.html


咨詢
建站咨詢
