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 80
und 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 802CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B982401
und verdopple ich SHA-256, und ich bekomme nichts wie die erwartete Prüfsumme vonF29E9187
Kann mir jemand helfen zu verstehen, wie F29E9187
abgeleitet wird?
F29E9187
sind 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 temp
die 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:
Auch nützlich - Sie können brainwallet.io verwenden , um die obigen Ergebnisse zu überprüfen.