Bitcoin 公開金鑰轉地址工具

線上將比特幣公開金鑰轉換為地址

輸入壓縮或未壓縮的比特幣公開金鑰,即可推導對應的錢包地址,包括傳統型(P2PKH)、腳本雜湊(P2SH)與原生 SegWit(Bech32 P2WPKH)等常見格式。

本工具可將壓縮與未壓縮的比特幣公開金鑰轉換為多種常見地址格式,包括傳統型 P2PKH、巢狀 SegWit P2SH-P2WPKH 與原生 SegWit P2WPKH。可用於比特幣地址研究、交易格式理解、錢包開發與區塊鏈分析等教育用途。

壓縮公開金鑰範例: 035cd1854cae45391ca4ec428cc7e6c7d9984424b954209a8eea197b9e364c05f6
非壓縮公開金鑰範例: 045cd1854cae45391ca4ec428cc7e6c7d9984424b954209a8eea197b9e364c05f6f5faaa72c795ca7bd49cbc9724639002935de3acc61172e44730872e3ecb49db

比特幣公開金鑰轉換為地址完整指南

本指南說明原始 secp256k1 公開金鑰如何經過密碼學雜湊與地址編碼流程,形成比特幣網路常見的地址格式,適合用於比特幣地址與區塊鏈基礎研究。

1. 從公開金鑰到地址:密碼學轉換流程

比特幣公開金鑰在未壓縮格式下通常為 65 位元組,壓縮格式則為 33 位元組。公開金鑰本身並不是所有地址格式的最終表示;依照地址類型不同,協定會進行雜湊、版本資訊與編碼等步驟,以形成適合在比特幣網路中使用的地址表示:

公開金鑰(X,Y) -> SHA-256 -> RIPEMD-160 -> Hash160(20 位元組) -> 地址編碼

其中常見的 Hash160 流程由以下兩個步驟組成:

  1. SHA-256:將公開金鑰的位元組資料進行雜湊,產生 256 位元(32 位元組)的摘要。
  2. RIPEMD-160:再將 SHA-256 的輸出進行雜湊,產生 160 位元(20 位元組)的公開金鑰雜湊值(PubKeyHash)。

2. 比特幣地址格式與 BIP 標準

根據地址類型與套用於 Hash160 的編碼方式不同,可以產生不同格式的比特幣地址:

地址格式 格式/標準 前綴 編碼方式
傳統型(P2PKH) Pay-to-PubKey-Hash(BIP 44) 1... Base58Check
巢狀 SegWit(P2SH-P2WPKH) Pay-to-Script-Hash(BIP 49) 3... Base58Check
原生 SegWit(P2WPKH) Pay-to-Witness-PubKey-Hash(BIP 84) bc1q... Bech32
Taproot(P2TR) Pay-to-Taproot(BIP 341) bc1p... Bech32m(X-only 公開金鑰)

3. 轉換為傳統型(P2PKH)地址的步驟

若要將壓縮公開金鑰轉換為以 1 開頭的標準傳統型地址,可依序進行以下步驟:

  • 步驟 1(公開金鑰):使用以 02 或 03 開頭、長度為 33 位元組的壓縮公開金鑰。
  • 步驟 2(Hash160):計算 RIPEMD160(SHA256(PublicKey)),取得 20 位元組的 PubKeyHash。
  • 步驟 3(網路前綴):在 20 位元組雜湊值前加入比特幣主網的版本位元組(0x00)。
  • 步驟 4(檢查碼):對加入版本前綴的資料連續執行兩次 SHA-256,並取前 4 個位元組作為檢查碼。
  • 步驟 5(Base58Check):將 4 位元組檢查碼加入資料後,以 Base58 編碼,得到最終的 P2PKH 地址。

4. 公開金鑰與地址之間的單向特性

理解地址推導具有單向數學函數的特性非常重要:

  • 公開金鑰 -> 地址:可以快速且確定性地計算。只要取得公開金鑰,任何人都可以依照對應格式計算地址。
  • 地址 -> 公開金鑰:對於採用公開金鑰雜湊的地址格式,僅從地址反推出原始公開金鑰在計算上不可行。需要注意的是,當相關 UTXO 被花費時,交易可能會在鏈上公開用於花費的公開金鑰或相關見證資料。