首頁 > 常見問題 > base64編碼是什麼

base64編碼是什麼

coldplay.xixi
發布: 2021-03-24 11:11:12
原創
3008 人瀏覽過

base64編碼是網路上最常見的用於傳輸8Bit位元組碼的編碼方式之一,Base64就是一種基於64個可列印字元來表示二進位資料的方法。可查看【RFC2045~RFC2049】,上面有MIME的詳細規格。

base64編碼是什麼

本文操作環境:Windows7系統,Dell G3電腦。

Base64編碼是從二進位到字元的過程,可用來在HTTP環境下傳遞較長的識別資訊。採用Base64編碼具有不可讀性,需要解碼後才能閱讀。

Base64由於上述優點被廣泛應用於電腦的各個領域,然而由於輸出內容中包括兩個以上「符號類別」字元( , /, =),不同的應用場景又分別研發了Base64的各種「變種」。為統一和規範化Base64的輸出,Base62x被視為無符號化的改進版本。

標準的Base64並不適合直接放在URL裡傳輸,因為URL編碼器會把標準Base64中的“/”和“ ”字元變成形如“%XX”的形式,而這些“ %」號在存入資料庫時還需要再轉換,因為ANSI SQL中已將「%」號碼用作萬用字元。

為解決此問題,可採用一種用於URL的改進Base64編碼,它在末尾填充'='號,並將標準Base64中的“ ”和“/”分別改成了“- ”和“_”,這樣就免去了在URL編解碼和資料庫存儲時所要作的轉換,避免了編碼信息長度在此過程中的增加,並統一了數據庫、表單等處對象標識符的格式。

另有一種用於正則表達式的改進Base64變種,它將“ ”和“/”改成了“!”和“-”,因為“ ”,“*”以及前面在IRCu中用到的「[」和「]」在正規表示式中都可能具有特殊意義。

此外還有一些變種,它們將“ /”改為“_-”或“._”(用作程式語言中的標識符名稱)或“.-”(用於XML中的Nmtoken)甚至「_:」(用於XML中的Name)。

Base64要求把每三個8Bit的位元組轉換為四個6Bit的位元組(3*8 = 4*6 = 24),然後把6Bit再添兩位高位0,組成四個8Bit的字節,也就是說,轉換後的字串理論上將要比原來的長1/3。

規則

關於這個編碼的規則:

①.把3個位元組變成4個位元組。

②每76個字元加一個換行符。

③.最後的結束符號也要處理。

範例

轉換前11111111, 11111111, 11111111 (二進位)

轉換後00111111, 00111111, 0011111, 10111, 00111111, 0011111,

上面的三個位元組是原文,下面的四個位元組是轉換後的Base64編碼,其前兩位為0。

轉換後,我們用一個碼表來得到我們想要的字串(也就是最終的Base64編碼),這個表是這樣的:(摘自RFC2045)

相關影片推薦:

PHP程式設計從入門到精通

#

以上是base64編碼是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板