So generieren Sie eine Bitcoin Private Key-Prüfsumme

Ich möchte verstehen, wie ein privater Bitcoin-Schlüssel aufgebaut ist.

Betrachten Sie diesen grafischen Generator https://royalforkblog.github.io/2014/08/11/graphical-address-generator/#hello

Ich verstehe Schritt 1, wie der private Schlüssel generiert wird:2CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B9824

Ich kann die vorangestellte Versionsnummer sehen 80und dass ich das Komprimierungsflag anhängen sollte01

Meine Frage dreht sich um Schritt 4, der einfach als "Prüfsumme anhängen. Prüfsumme sind die ersten 4 Bytes des doppelten sha256-Hashes von allem, was geprüft wird."

Also nehme 802CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B982401und verdopple ich SHA-256, und ich bekomme nichts wie die erwartete Prüfsumme vonF29E9187

Kann mir jemand helfen zu verstehen, wie F29E9187abgeleitet wird?

Antworten (2)

F29E9187sind in der Tat die ersten vier Bytes des Double sha256 der Bytes:

802CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B982401

Um dies zu überprüfen, müssen Sie den doppelten sha256 dieses Byte-Arrays berechnen. Wie bereits erwähnt, wird die Übergabe des Strings 802CF2...an die Hash-Funktion jedoch nicht die richtige Antwort liefern, da dieser String nicht das Array von Bytes selbst ist (es ist eine hexadezimale Codierung des Arrays). Lassen Sie uns also eine Binärdatei erstellen, die der obigen Hex-Codierung entspricht:

$ echo -n 802CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B982401 \
   | xxd -r -p > temp

Lassen Sie uns überprüfen, ob unsere Binärdatei tempdie richtigen Bytes enthält:

$ 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

So weit, ist es gut. Wir können jetzt den ersten sha256-Hash dieser Bytes berechnen:

$ sha256sum temp
08a9d3e1296633b2a4071316eaf597f1c93a0ec2f4b68b24c6e0ad2e7c06540c  temp

Auch hier sind wir mit einer Hex-Codierung konfrontiert, die wir in tatsächliche Bytes umwandeln müssen:

$ echo -n 08a9d3e1296633b2a4071316eaf597f1c93a0ec2f4b68b24c6e0ad2e7c06540c \
  | xxd -r -p > temp

Nochmal zur Kontrolle:

$ 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

Berechnen wir also den sha256-Hash dieser Bytes:

$ sha256sum temp
f29e9187a566a24502d7cd2eae948e74bc4dfafc7deff44cce80e1256ef12a3e  temp

Sie können sehen, dass die ersten 4 Bytes tatsächlichF29E9187 .

Sehen Sie sich auch diesen ziemlich einfachen Brain-Wallet-Generator an – er zeigt die Schritte, die erforderlich sind, um den privaten Base58-Standardschlüssel aus einer Passphrase zu erstellen.

Unten ist eine teilweise Bildschirmaufnahme der obigen URL von der Website commandlinefu.com:

Screenshot der URL

Auch nützlich - Sie können brainwallet.io verwenden , um die obigen Ergebnisse zu überprüfen.