base32
編碼 --
記錄一、
base32
資料編碼簡介
base32
這種資料編碼機制,主要用來把二進位制資料編碼成可見的字串,其編碼規則是:任意給定乙個二進位制資料,以5個位
(bit)
為一組進行切分
(base64以6
個位(bit)
為一組)
,對切分而成的每個組進行編碼得到
1個可見字元。
base32
編碼表字符集中的字元總數為
25=32
個,這也是
base32
名字的由來。以下是我在網上找的乙個標準的
base32
編碼表,如表
1所示。 表
1 標準
base
編碼表
二、編碼演示
下面以乙個具體的例子說明
base32
的編碼過程。這裡以
「bhst」
字串進行編碼。步驟如下: 1.
字元「bhst」
取ascii
碼之後,對其轉換成二進位制得到
「1100010,1101000,1110011,1110100,」
共四個位元組,28個
bit的二進位制串。注:因為
base32
是屬於傳輸
8bit
位元組**的編碼方式,所以這裡要對
「bhst」
字串對應的二進位制最高位加
0變成每組8個
bit。組成32個
bit的二進位制串。 2.
以5個bit
為一組對
「bhst」
字串對應的二進位制串進行切分。得到
「01100,01001,10100,00111,00110,11101,00000」7
個位元組的
「bhst」
二進位制串。注:每組的二進位制串不足5個用
0補充。 3.
計算每組二進位制串所對應的十進位制,然後參考標準
base32
編碼表,找出所對應的編碼字元,組合成密文。注:最後乙個分組位數不足
4個的時候,則用字元
「=」編碼。 如表
2所示:
2 以5個
bit為一組切分得到
7個位元組的目
標二進位制串及對應的標準
base32
編字元
三、例項解碼
編碼的演算法知道了,想要解碼反推回來就可以了。這裡以遊戲中的密文為例。
「i4ag6aa=」
步驟如下: 1
、對密文中的編碼字元(對照標準
base32
編碼表)找出所對應的十進位制編碼值。分別為:
8 28 0 6 30 0 0。
2、把十進位制的編碼值轉換成二進位制,不足5個
bit用
0補充。得到:
01000,11100,00000,00110,11110,00000,00000 3
、組合每組的二進位制串,並以8個
bit為一組進行切分。得到:
01000111,00000000,01101111,00000000,00000000 4
、還原每組二進位制串得到明文的
ascii
碼71 0 111 0 0
,還原成字元為go。
如表3所示:
四、總結
以後見到有一串固定的字串和
『=』以及演算法中有
rol eax,5
等字樣要想起來這個是
base32
的演算法順便學到乙個方法來排除輸入的是不是自己想要的字元通過預先設定乙個字元
hash
表,然後查詢,如果不在的話就返回
false
BASE32編碼 記錄
一 base32 資料編碼簡介 base32這種資料編碼機制,主要用來把二進位制資料編碼成可見的字串,其編碼規則是 任意給定乙個二進位制資料,以5個位 bit 為一組進行切分 base64以6 個位 bit 為一組 對切分而成的每個組進行編碼得到 1個可見字元。base32 編碼表字符集中的字元總數...
磁力鏈結的BASE32編碼向HEX編碼的轉換
magnet xt urn btih 22566ff577354de67fc6315f11c3f3e8804a2356 tr.0 其中,20個位元組的 magnet xt urn btih 可以認為是頭,然後是40個位元組的十六進製制數 hex格式 稱為雜湊值,最後是 符號帶的可選結構。經過實際試驗...
hex和base32和base64的區別與聯絡
看個例子 package main import fmt import encoding hex import encoding base32 import encoding base64 func main 有些小夥伴可能有疑問,為啥要把 hello world 這麼明白的東西變成一串看不懂的東西...