BASE32編碼 記錄

2021-05-23 09:45:45 字數 1754 閱讀 8202

一、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 資料編碼簡介 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 這麼明白的東西變成一串看不懂的東西...