這一期我們要講的密碼學和上一期有所區別,也正如上一期所說的,這一期我們會講一些單
向的哈希函數
首先我們不講哈希函數,先說一下 base 編碼
base 編碼有一個很明顯的特征就是以\u003d\u003d結尾
base 編碼有很多種
Base32 編碼是使用 32 個可打印字符(字母 A-Z 和數字 2-7)對任意字節數據進行編碼的方
案,編碼後的字符串不用區分大小寫並排除了容易混淆的字符,可以方便地由人類使用並由
計算機處理
Base32 將任意字符串按照字節進行切分,並將每個字節對應的二進製值(不足 8 比特高位
補 0)串聯起來,按照 5 比特一組進行切分,並將每組二進製值轉換成十進製來對應 32 個
可打印字符中的一個。
由於數據的二進製傳輸是按照 8 比特一組進行(即一個字節),因此 Base32 按 5 比特切分的
二進製數據必須是 40 比特的倍數(5 和 8 的最小公倍數)。例如輸入單字節字符“%”,它對
應的二進製值是“100101”,前麵補兩個 0 變成“00100101”(二進製值不足 8 比特的都要
在高位加 0 直到 8 比特),從左側開始按照 5 比特切分成兩組:“00100”和“101”,後一組
不足 5 比特,則在末尾填充 0 直到 5 比特,變成“00100”和“10100”,這兩組二進製數分
別轉換成十進製數,通過上述表格即可找到其對應的可打印字符“E”和“U”,但是這裏隻
用到兩組共 10 比特,還差 30 比特達到 40 比特,按照 5 比特一組還需 6 組,則在末尾填充
6 個“\u003d”。填充“\u003d”符號的作用是方便一些程序的標準化運行,大多數情況下不添加也無
關緊要,而且,在 URL 中使用時必須去掉“\u003d”符號。
Base64
Base64 是一種基於 64 個可打印字符來表示二進製數據的表示方法。由於,所以每 6 個
比特為一個單元,對應某個可打印字符。3 個字節有 24 個比特,對應於 4 個 Base64 單元,
即 3 個字節可由 4 個可打印字符來表示。
在 Base64 中的可打印字符包括字母 A-Z、a-z、數字 0-9,這樣共有 62 個字符,此外兩個
可打印符號在不同的係統中而不同。一些如 uuencode 的其他編碼方法。
它可用來作為電子郵件的傳輸編碼Base64 常用於在通常處理文本數據的場合,表示、傳輸、存儲一些二進製數據,包括
MIME 的電子郵件及 XML 的一些複雜數據。
Base85
base85 也稱為 Ascii85,是 Paul E. Rutter 為 btoa 實用程序開發的一種二進製文本
編碼形式。通過使用五個 ASCII 字符來表示四個字節的二進製數據(使編碼量 1 / 4 比原來大,
假設每 ASCII 字符 8 個比特),它比更有效 UUENCODE 或 Base64 的,它使用四個字符來表示
三個字節的數據(1 / 3 的增加,假設每 ASCII 字符 8 個比特)。