Bitcoin Forum
May 31, 2024, 12:25:40 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: private -> public Key  (Read 842 times)
Mannfred (OP)
Newbie
*
Offline Offline

Activity: 41
Merit: 0



View Profile
June 04, 2013, 10:07:57 PM
 #1

Hallo Leute,

ich verzweifele gerade, weil ich nicht herausfinden kann wie der öffentliche Schlüssel aus dem privaten erstellt werden kann.

Und Ja, ich habe

https://en.bitcoin.it/wiki/Technical_background_of_Bitcoin_addresses

gelesen.

Nur startet das anschaulich am öffentlichen Schlüssel. Diese Umwandlung kann ich auch problemlos implemenieren - zumal die Schritte leicht verständlich sind.

Aber wie ermittle ich auf Basis eines privaten Schlüssels den öffentliche Schlüssel? Das ist für die Adresse aus dem öffentlichen Schlüssel prima unter

https://en.bitcoin.it/wiki/File:PubKeyToAddr.png

erklärt. Nur eben nicht von privatem zu öffentlichen Schlüssel.

Sorry, wenn ich da was nicht gefunden habe, aber ich suche da schon seit Tagen.
candoo
Hero Member
*****
Offline Offline

Activity: 602
Merit: 500


Vertrau in Gott


View Profile
June 04, 2013, 10:09:31 PM
 #2

Quote
1 - Take a private key
   0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
2 - Add a 0x80 byte in front of it
   800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
3 - Perform SHA-256 hash on the extended key
   8147786C4D15106333BF278D71DADAF1079EF2D2440A4DDE37D747DED5403592
4 - Perform SHA-256 hash on result of SHA-256 hash
   507A5B8DFED0FC6FE8801743720CEDEC06AA5C6FCA72B07C49964492FB98A714
5 - Take the first 4 bytes of the second SHA-256 hash, this is the checksum
   507A5B8D
6 - Add the 4 checksum bytes from point 5 at the end of the extended key from point 2
   800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D507A5B8D
7 - Convert the result from a byte string into a base58 string using Base58Check encoding. This is the Wallet Import Format
   5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ
WIF to private key

1 - Take a Wallet Import Format string
   5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ
2 - Convert it to a byte string using Base58Check encoding
   800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D507A5B8D
3 - Drop the last 4 checksum bytes from the byte string
   800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
4 - Drop the first byte (it should be 0x80). This is the private key
   0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
WIF checksum checking

1 - Take the Wallet Import Format string
   5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ
2 - Convert it to a byte string using Base58Check encoding
   800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D507A5B8D
3 - Drop the last 4 checksum bytes from the byte string
   800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
3 - Perform SHA-256 hash on the shortened string
   8147786C4D15106333BF278D71DADAF1079EF2D2440A4DDE37D747DED5403592
4 - Perform SHA-256 hash on result of SHA-256 hash
   507A5B8DFED0FC6FE8801743720CEDEC06AA5C6FCA72B07C49964492FB98A714
5 - Take the first 4 bytes of the second SHA-256 hash, this is the checksum
   507A5B8D
6 - Make sure it is the same, as the last 4 bytes from point 2
   507A5B8D

Einer trage des andern Last, so werdet ihr das Gesetz Christi erfüllen.
fornit
Hero Member
*****
Offline Offline

Activity: 991
Merit: 1008


View Profile
June 05, 2013, 03:59:20 AM
 #3

keine ahnung  Tongue

aber wenn dir candoos virtuose antwort wider erwarten  Wink doch nicht weiterhilft:

armory hat einen ecdsa rechner, der unter anderem genau das macht. da kannst du dir im code jedes einzelne häppchen der berechnung angucken und gleichzeitig in armory gegenchecken, ob deine implementierung bis zu einem gewissen punkt schon fehlerfrei ist oder nicht.
Mannfred (OP)
Newbie
*
Offline Offline

Activity: 41
Merit: 0



View Profile
June 05, 2013, 02:28:56 PM
 #4

Hallo,

Danke zunächst für Eure Antworten. Leider hilft mir das bislang nicht weiter, weil ich nicht sehe, wie der öffentliche Schlüssel erstellt wird. Also werde ich mich mal in den Quellcode von armory einarbeiten müssen...


;-)

Mannfred
fornit
Hero Member
*****
Offline Offline

Activity: 991
Merit: 1008


View Profile
June 05, 2013, 03:49:18 PM
 #5

ich habe gerade nochmal geguckt: scheinbar macht das kein schwein selbst  Grin
armory benutzt cryptopp, andere nehmen gerne openssl.

wenn du es wirklich selbst machen willst: http://www.nsa.gov/ia/_files/ecdsa.pdf
da wünsche ich dann aber schonmal viel spass  Wink
BeeCoin
Sr. Member
****
Offline Offline

Activity: 308
Merit: 250


View Profile
June 06, 2013, 07:12:39 PM
 #6

Ich würde Dir auch mal Armory (geht auch im Offline Modus) Elliptic Curve Calculator empfehlen. Da siehst Du auch sehr schön sämtliche Kompressions/Darstellungsformate von private und public keys. Das erleichtert den Start und das Verständnis. Von dort kannst Du Dir dann entsprechende Krypto-Libraries vielleicht noch anschauen...
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!