> 編碼 | 解碼 | base32 <
// Base32編碼用於人類可讀的二進制資料表示
[人性化]
人類友好
使用易於閱讀的字元(A-Z,2-7),避免容易混淆的字元如0、1、8、9。
[安全]
本機處理
所有轉換都在您的瀏覽器中進行。您的資料永遠不會離開您的裝置。
[標準]
RFC 4648
遵循RFC 4648標準,確保與其他系統和應用程式的相容性。
>> 技術資訊
Base32工作原理:
Base32使用32個字元(A-Z和2-7)編碼二進制資料。每5位元組編碼為8字元,提供良好的可讀性和錯誤檢測能力。
範例:
"你好" → 4S6KNZNFW3Q====
為什麼使用Base32:
- >避免混淆字元,提高可讀性
- >適合人工輸入和驗證
- >良好的錯誤檢測能力
- >適用於不區分大小寫的系統
- >Google Authenticator等應用使用
>> 常見問題
什麼是Base32編碼?
Base32是一種使用32個可列印字元(A-Z和2-7)來表示二進制資料的編碼方案,特別設計為人類友好和避免字元混淆。
Base32為什麼不使用0、1、8、9?
Base32故意避免使用容易與字母混淆的數字:0(與O混淆)、1(與I混淆)、8(與B混淆)、9(與g混淆),提高可讀性。
Base32和Base64有什麼區別?
Base32使用32個字元,輸出更長但更易讀;Base64使用64個字元,輸出更短但包含特殊字元。Base32更適合人工處理。
何時使用Base32?
Base32適用於需要人工輸入的場景,如二維碼、備份代碼、TOTP密鑰,以及不區分大小寫的檔案系統和協定。
// 速查表
| 輸入 | Base32 | Base64 |
|---|---|---|
| f | MY====== | Zg== |
| fo | MZXQ==== | Zm8= |
| foo | MZXW6=== | Zm9v |
| foob | MZXW6YQ= | Zm9vYg== |
| fooba | MZXW6YTB | Zm9vYmE= |
| foobar | MZXW6YTBOI====== | Zm9vYmFy |
// 程式碼範例
CLI echo -n foobar | base32
Python base64.b32encode(b'foobar') / base64.b32decode(s)
Go base32.StdEncoding.EncodeToString([]byte("foobar"))
Java new Base32().encodeToString(bytes) // commons-codec
Node.js npm i hi-base32 // no built-in
>> 更多問題
問:Base32、Base64 和 Base16 有什麼區別?
答:三者都來自 RFC 4648,差別只在每個字元攜帶的位元數:Base16 為 4 位元(開銷 100%),Base32 為 5 位元(60%),Base64 為 6 位元(33%)。Base32 較長,但易讀且不分大小寫。
問:Base32 解碼區分大小寫嗎?
答:不區分。RFC 4648 的字母表為大寫,但解碼器應把小寫視為相同。本工具會在解碼前把輸入轉為大寫,因此 jbswy3dp 與 JBSWY3DP 結果相同。
問:Base32 在實際中用在哪裡?
答:常見於 TOTP/2FA 金鑰(Google Authenticator、Authy)、Tor v3 洋蔥位址(56 個字元),以及不分大小寫的系統識別碼,如某些檔案系統或 DNS 標籤。