Cryptography

如何生成比特幣私鑰校驗和

  • December 2, 2017

我想了解比特幣私鑰是如何構成的。

看看這個圖形生成器 <https://royalforkblog.github.io/2014/08/11/graphical-address-generator/#hello>

我了解第 1 步,如何生成私鑰: 2CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B9824

我可以看到前置的版本號80,並且我應該附加壓縮標誌 01

我的問題是關於第 4 步,它被簡單地詳細描述為“附加校驗和。校驗和是被校驗和的任何內容的雙 sha256 雜湊的前 4 個字節。”

所以我把802CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B982401SHA-256 加倍,我沒有得到任何像預期的校驗和F29E9187

誰能幫我理解F29E9187是如何派生的?

F29E9187確實是字節的雙 sha256 的前四個字節:

802CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B982401

為了檢查這一點,您需要計算此字節數組的雙 sha256。然而,正如已經討論過的,將字元串傳遞802CF2...給雜湊函式不會產生正確的答案,因為這個字元串本身不是字節數組(它是數組的十六進制編碼)。所以讓我們創建一個對應於上面十六進制編碼的二進製文件:

$ echo -n 802CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B982401 \
  | xxd -r -p &gt; temp

讓我們檢查我們的二進製文件temp是否有正確的字節:

$ hexdump -C temp

00000000  80 2c f2 4d ba 5f b0 a3  0e 26 e8 3b 2a c5 b9 e2  |.,.M._...&.;*...|
00000010  9e 1b 16 1e 5c 1f a7 42  5e 73 04 33 62 93 8b 98  |....\..B^s.3b...|
00000020  24 01                                             |$.|
00000022

到目前為止,一切都很好。我們現在可以計算這些字節的第一個 sha256 雜湊:

$ sha256sum temp
08a9d3e1296633b2a4071316eaf597f1c93a0ec2f4b68b24c6e0ad2e7c06540c  temp

同樣,我們面臨著需要將其轉換為實際字節的十六進制編碼:

$ echo -n 08a9d3e1296633b2a4071316eaf597f1c93a0ec2f4b68b24c6e0ad2e7c06540c \
 | xxd -r -p &gt; temp

再次檢查:

$ hexdump -C temp

00000000  08 a9 d3 e1 29 66 33 b2  a4 07 13 16 ea f5 97 f1  |....)f3.........|
00000010  c9 3a 0e c2 f4 b6 8b 24  c6 e0 ad 2e 7c 06 54 0c  |.:.....$....|.T.|
00000020

因此,讓我們計算這些字節的 sha256 雜湊:

$ sha256sum temp
f29e9187a566a24502d7cd2eae948e74bc4dfafc7deff44cce80e1256ef12a3e  temp

您可以看到前 4 個字節確實是F29E9187.

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