Base64的介紹以及Base64URL介紹

1.Base64是什麼:
         Base64是網絡上最常見的用於傳輸8Bit字節代碼的編碼方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的詳細規範。Base64編碼可用於在HTTP環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就採用了Base64來將一個較長的唯一標識符(一般爲128-bit的UUID)編碼爲一個字符串,用作HTTP表單和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進制數據編碼爲適合放在URL(包括隱藏表單域)中的形式。此時,採用Base64編碼不僅比較簡短,同時也具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到。
2.簡介:
         標準的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.規則:
         關於這個編碼的規則:
①.把3個字符變成4個字符..
②.每76個字符加一個換行符..
③.最後的結束符也要處理..
這樣說會不會太抽象了?不用着急,我們來看一個例子:
轉換前: aaaaaabb ccccdddd eeffffff
轉換後: 00aaaaaa 00bbcccc 00ddddee 00ffffff
應該很清楚了吧?上面的三個字節是原文,下面的四個字節是轉換後的Base64編碼,其前兩位均爲0。

轉換後,我們用一個碼錶來得到我們想要的字符串(也就是最終的Base64編碼)。

 

4.BASE64URL是一種在BASE64的基礎上編碼形成新的加密方式,爲了編碼能在網絡中安全順暢傳輸,需要對BASE64進行的編碼,特別是互聯網中。

BASE64URL編碼的流程:

      1、明文使用BASE64進行加密

     2、在BASE64的基礎上進行一下的編碼:

              1)去除尾部的"="

              2)"+"替換成"-"

              3)"/"替換成"_"

 

BASE64URL解碼的流程:

     1、把BASE64URL的編碼做如下解碼:

              1)"-"替換成"+"

              2)"_"替換成"/"

              3)(計算BASE64URL編碼長度)%4

                         a)結果爲0,不做處理

                         b)結果爲2,字符串添加"=="

                         c)結果爲3,字符串添加"="

     2、使用BASE64解碼密文,得到原始的明文


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章