Bitcoin 私密金鑰轉換工具(Hex ⇔ WIF

比特幣 WIF ↔ HEX 線上轉換工具

輕鬆在比特幣私鑰的 Wallet Import Format(WIF 壓縮版/未壓縮版)與 64 字元十六進位制(HEX)格式之間進行雙向轉換。

這是一個在瀏覽器端執行的比特幣私鑰格式轉換工具,使用 Base58Check 與 SHA-256 演算法進行 WIF 私鑰的編碼與解碼。工具可以在不將私鑰傳送到網路伺服器的情況下,將原始 256 位元 HEX 私鑰與 WIF 格式互相轉換。私鑰屬於高度敏感的錢包資訊,請勿在公開網站或不受信任的環境中輸入真實資產所使用的私鑰。

壓縮 WIF 範例: L2bWLsmchd4AUaFq56UuQ1u3pdNqz28TcJZBHJjE61J1CEbbzSDj
未壓縮 WIF 範例: 5K2vmqCvQFWiZyvf5Z49hZNm95AUs5LMywGuB3CqH63wsdRAzcs
HEX 範例: a0664b8e95a437a616737ec4a141c4abe15f9548f16b0451e1481c26f33c7025

比特幣私鑰格式轉換:HEX 與 WIF 雙向轉換

本教育指南介紹如何將原始 256 位元十六進位制私鑰編碼為 Wallet Import Format(WIF),以及如何從 WIF 解碼並還原原始私鑰格式。

1. 什麼是 WIF(Wallet Import Format)?

比特幣原始私鑰本質上是一個 256 位元的數值,通常以 64 個字元的十六進位制(HEX)字串表示。HEX 格式非常適合電腦處理,但本身沒有內建的錯誤檢查機制,因此在手動複製或輸入時,如果出現一個字元錯誤,就可能導致私鑰無法正常使用。

Wallet Import Format(WIF)是一種專門為比特幣私鑰設計的標準編碼格式,方便使用者將私鑰複製並匯入支援 WIF 的錢包軟體。WIF 採用Base58Check編碼,加入網路版本位元組與 4 位元組檢查碼,因此可以協助偵測部分輸入或複製錯誤。

2. HEX 轉換為 WIF:完整步驟

如果要將 64 個字元的原始 HEX 私鑰轉換成壓縮 WIF,可以按照以下流程處理:

  1. 加入主網版本前綴:在 32 位元組的 HEX 私鑰前方加入比特幣主網 WIF 版本位元組 0x80。
  2. 加入壓縮標記(選用):如果該私鑰將用於產生壓縮格式的公開金鑰,則在資料結尾加入 0x01。
  3. 計算檢查碼:對完整 Payload 執行兩次 SHA-256,即 SHA256(SHA256(Payload)),並取結果前 4 個位元組作為檢查碼。
  4. 加入檢查碼:將 4 位元組檢查碼附加至 Payload 尾端。
  5. Base58 編碼:將完整位元組資料使用 Base58 進行編碼,產生最終的 WIF 私鑰。
HEX Payload:0x80 + [32 位元組私鑰] + 0x01
檢查碼:SHA256(SHA256(HEX Payload)) 的前 4 個位元組
WIF 輸出:Base58Encode(HEX Payload + 檢查碼)

3. WIF 前綴與格式對照

從 WIF 字串的第一個字元,可以初步判斷其所屬的 Bitcoin 網路,以及私鑰是否對應壓縮公開金鑰:

WIF 開頭字元 網路 私鑰類型 長度
5 Bitcoin 主網 未壓縮 51 字元
K 或 L Bitcoin 主網 壓縮 52 字元
9 Bitcoin 測試網 未壓縮 51 字元
c Bitcoin 測試網 壓縮 52 字元

4. WIF 轉換為 HEX:解碼流程

如果要從 WIF 字串還原原始的 64 字元 HEX 私鑰,可以按照相反方向執行解碼流程:

  • 步驟 1:將 Base58 格式的 WIF 字串解碼為原始位元組資料。
  • 步驟 2:將最後 4 個位元組,也就是檢查碼,從 Payload 中分離出來。
  • 步驟 3:對 Payload 執行兩次 SHA-256,並確認計算出的檢查碼與原始檢查碼一致。如果兩者不一致,表示 WIF 可能無效、輸入錯誤或資料已損壞。
  • 步驟 4:移除開頭的版本位元組 0x80,以及代表壓縮格式的結尾位元組 0x01(如果存在),即可取得原始的 32 位元組 HEX 私鑰。