Kryptowährung: Wir erzeugen uns heute mal einen privaten Bitcoin Key mit Java bevor der BTC Kurs auf über 50000 Dollar springt


Es ist bei Bitcoin sehr wichtig das Konzept zu verstehen, das man keine Online Verbindung für das generieren einer Bitcoion Wallet Adresse benötigt.
Das geht komplett Offline. Und ohne separaten Server, eine Webseite oder einen besonderen Service. Es wird nur etwas Mathe benötigt. Mit Java sind nur ein paar Zeilen nötig.

1. privaten Key erzeugen, dazu brauchen wir nur einen guten Zufallsgenerator der uns 32 Byte erzeugen kann. Könnte mal auch auswürfeln.
2. validieren ob der Key gültig ist

Hier der dokumentierte Code: …

Das ist schon alles, wir haben einen eigenen Bitcoin private Key erzeugt! Hurra! Wenn jemand anderes den gleichen Key generieren will gibt es 2 hoch 256 Möglichkeiten. Eine astronomisch große Zahl.

Genau sind aber nicht alle privaten Keys in Bitcoin gültig. Die Keys müssen kleiner sein als Hex:

0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140

weil Bitcoin Elliptic Curve Cryptography (ECC) nutzt (secp256k1). Das schränkt uns aber nicht wirklich ein. Ist der erzeugt Key zu groß, berechnen wir einfach einen neuen. Hier die Klasse die den Key validiert:

Die Ausgabe des Programms liefert dann den private Key in der letzen Zeile als Hex:

Nun haben wir schon einen gültigen privaten Key für Bitcoin erzeugt. Wer den privaten Key cf44b70acf3096146ad7ca9c11a7a51784b2a51257000ecf990ca76d6560f749 dann mal validieren will, kann ihn ja mal hier im Feld 0 – Private ECDSA Key eingeben und auf „Send“ klicken. Schon wird online die gültige Bitcoin-Adresse 1JqbJP3N2jvmbz3nQzzPYjeXtWbcCTMHUD bzw. Konto generiert.

Der private Key muss ja immer geheim gehalten werden. Deshalb bitte nichts auf diese nun allgemein bekannte Adresse überweisen 😉 Aber es gibt ja auch noch genügend andere Adressen 😉

Nun kommt der eigentlich viel spannenderer Task, aus dem privaten Key den public Key mit Java zu generieren. Das geht mit der Elliptic Curve Cryptography (ECC) (secp256k1). Auf der obigen Online-Seite habe wir das ja schon gemacht. Aber eben nicht offline und mit Java. Dann mal los, aber nicht mehr heute …

Kleine Programmier challenge: Wer will, kann mir den Java Code per E-Mail senden, wie am besten aus dem privaten Key ein public Key erzeugt wird. Auf wunsch nenne ich dann auch den Namen und stelle die verschiedenen Möglichkeiten vor.