Encoding

什麼是 130 十六進製字元的公鑰?

  • February 26, 2015

我進入<https://www.bitaddress.org>,最後一個選項卡有一個輸入私鑰的地方,它顯示了公鑰和私鑰的各種格式。

對我來說很奇怪,公鑰可以是 33 Base58 或 130 Base16。這似乎不對,尤其是因為私鑰是 51 Base58 或 64 Base16,這是有道理的。

那麼給了什麼?這是一個列印螢幕:

比特幣地址(33 或 34 個字元,以“1”開頭):1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm

公鑰(130 個字元 [0-9A-F]):0479BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F8179 8483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08BFF8B

私鑰十六進制格式(64 個字元 [0-9A-F]):XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

比特幣私鑰為 32 字節,但通常以 279 字節的完整 OpenSSL 序列化形式儲存。它們被序列化為 51 個 base58 字元或 64 個十六進製字元。

比特幣公鑰(傳統上)是 65 個字節(第一個是 0x04)。它們通常編碼為 130 個十六進製字元。

比特幣壓縮公鑰(從 0.6.0 開始)是 33 個字節(第一個是 0x02 或 0x03)。它們通常被編碼為 66 個十六進製字元。

比特幣地址為 RIPEMD160(SHA256(pubkey)),20 字節。它們通常編碼為 34 個 base58 字元。

您的公鑰是 65 個字節的數據:前導 0x04 字節,後跟 32 個字節表示 X 座標,32 個字節表示它所代表的點的 Y 座標。顯示完整密鑰需要 130 個十六進製字元,每個字元 4 位。

你的比特幣地址是你的公鑰的雜湊值。它比這更複雜一點,涉及多個雜湊和內置校驗和,但這基本上是正確的。

不可能從您的比特幣地址獲取您的公鑰。有許多公鑰具有相同的比特幣地址。如果資金是使用官方客戶端發送的,則相應的私鑰能夠將資金花在該地址上。很難找到與現有地址具有相同比特幣地址的密鑰對。發送到比特幣地址的資金的可支出性檢查是:

交易輸出的花費者:

  • 必須提供一個公鑰,該公鑰散列到該交易的創建者指定的地址,並且
  • abe 必須通過簽署他的新交易來證明他持有相應的私鑰

在任何時候都不會檢查花費者是否具有與預期接收者相同的公鑰。事實上,交易的創建者不知道預期接收者的公鑰,只知道他的比特幣地址。

引用自:https://bitcoin.stackexchange.com/questions/3041