Private-Key

將 256 位私鑰轉換為 WIF 的正確方法?

  • April 21, 2019

在比特幣維基上,它有將私鑰轉換為 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 
}

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