將 256 位私鑰轉換為 WIF 的正確方法?
在比特幣維基上,它有將私鑰轉換為 WIF 的步驟。所以我嘗試按照這些步驟嘗試獲得相同的結果。
所以我拿了私鑰。
0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
我把80放在前面。
800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
然後我使用它對其執行 SHA- 256。
e2e4146a36e9c455cf95a4f259f162c353cd419cc3fd0e69ae36d7d1b6cd2c09
這就是我遇到問題的地方。在 wiki 頁面上,它說 SHA-256 的結果應該是……
8147786C4D15106333BF278D71DADAF1079EF2D2440A4DDE37D747DED5403592
這與我的 SHA-256 結果不符。
不知道我做錯了什麼。
您正在對 ASCII 字元串執行 SHA256,而不是在實際數字上。該 ASCII 字元串實際上是實際數字的十六進製表示。
這是一個小程式碼片段,它使用 hex2bin 函式將十六進製表示(來自您的問題)轉換為實際數字,然後再對其執行 sha256。
以下是如何使用bitcoin-explorer命令行在 UNIX 機器上生成未壓縮的 WIF 私鑰:
% 迴聲 0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D | bx base58check-encode -v 128
5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ
以下提供了反方向的回饋:
% 迴聲 5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ | bx base58check-decode
wrapper { checksum 2371582544 payload 0c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d version 128 }
要創建壓縮的 WIF 私鑰,只需在私鑰後綴01:
% 迴聲 0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D 01 | bx base58check-encode -v 128
KwdMAjGmerYanjeui5SHS7JkmpZvVipYvB2LJGU1ZxJwYvP98617
或者,以下一組管道命令執行相同的功能:
% 迴聲 0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D | sed ’s/$/01/’ | bx 換行編碼-v 128 | bx base58 編碼
0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D01
800c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d01a62019d2
KwdMAjGmerYanjeui5SHS7JkmpZvVipYvB2LJGU1ZxJwYvP98617
以下雙重檢查壓縮的 WIF 密鑰編碼:
% 迴聲 KwdMAjGmerYanjeui5SHS7JkmpZvVipYvB2LJGU1ZxJwYvP98617 | bx base58check-decode
wrapper { checksum 3524862118 payload 0c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d01 version 128 }