Bitcoin Forum
November 09, 2024, 06:04:40 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: C# Public Key von Private Key VERY SLOW  (Read 937 times)
daboehla (OP)
Sr. Member
****
Offline Offline

Activity: 490
Merit: 258



View Profile
August 01, 2015, 05:51:06 PM
Last edit: August 02, 2015, 06:28:12 AM by daboehla
 #1

Hallo zusammen,

ich versuche derzeit aus einem private key den dazugehörigen public key zu errechnen.
z.b.: priv. key: 26760d07c7b06da3ac7d27946b4853e0665c50e0a8b705269b2cfd48f061de2b  -> 1A9yKFpmH1GFFeLLv2XGhP41BKCFgRgykN
Dazu habe ich mir den Sourcecode von Bitcoin Address Utility (https://en.bitcoin.it/wiki/Bitcoin_Address_Utility) heruntergeladen.

Hab im Sourcecode die Stelle gefunden, an welcher der Public Key in die Textbox geschrieben wird und zum Test mal 100 Mal durchlaufen lassen.

Nun ist mein Problem, dass es SEHR lange dauert... 100 mal generieren -> 10s -> ca 10 Keys/s
Jemand eine Idee warum das so lange dauert ?

Wenn ich mir vanitygen anschaue, die erstellt ja ca 1 Million pro Sekunde.

Gib es eine schnellere Möglichkeit den public key mit C# zum rechnen ?

Hier mein Testcode:
Code:
                DateTime start = DateTime.Now;
                for (int i = 0; i < 100; i++) {
                    KeyPair kp = new KeyPair(txtPrivHex.Text, compressed: compressToolStripMenuItem.Checked);
                    string pubkey = kp.AddressBase58;
                }
                double elapsedsecs = (DateTime.Now - start).TotalSeconds;

EDIT: Topic im englischen Bereich:
https://bitcointalk.org/index.php?topic=1141038.0
daboehla (OP)
Sr. Member
****
Offline Offline

Activity: 490
Merit: 258



View Profile
August 01, 2015, 06:32:15 PM
 #2

Hab den Code nochmals genau untersucht und die Operation gefunden, die so lange braucht.

Ist die Umrechnung vom Private Key zum Public Key mit den "komischen" Elliptic Curves....
Kann es sein das die Library(Org.BouncyCastle) so langsam ist ? :/

Soweit ich das System von Bitcoin verstanden habe, gibt es keinen Ausweg aus dieser Operation ...?

Folgender Code braucht 100ms:

Code:
            Org.BouncyCastle.Math.BigInteger Db = new Org.BouncyCastle.Math.BigInteger(1, _privKey);
            ECPoint dd = point.Multiply(Db);
herzmeister
Legendary
*
Offline Offline

Activity: 1764
Merit: 1007



View Profile WWW
August 07, 2015, 02:21:20 PM
 #3

gibt ja inzwischen auch eine offizielle BigInteger-Implementierung von MS, vielleicht ist die performanter https://msdn.microsoft.com/en-us/library/system.numerics.biginteger(v=vs.110).aspx

aber is sicher nich ohne, diese Dependency in der verwendeten Library zu ändern

https://localbitcoins.com/?ch=80k | BTC: 1LJvmd1iLi199eY7EVKtNQRW3LqZi8ZmmB
hexafraction
Sr. Member
****
Offline Offline

Activity: 392
Merit: 268

Tips welcomed: 1CF4GhXX1RhCaGzWztgE1YZZUcSpoqTbsJ


View Profile
August 20, 2015, 07:39:55 PM
 #4

Das Algorithmus von vanitygen ist im Unterschied zu Ihren Algorithmus. Vanitygen macht "point-addition", aber man musst fur Private zum Public "point multiplication" machen. Point-addition ist schneller als Point multiplication, aber point addition kann nur eine Suche von alles private keys machen (Zu secret exponent wird immer wieder inkrementiert).

Entschuldigung, leider ist mein Deutsch schrecklich.

I have recently become active again after a long period of inactivity. Cryptographic proof that my account has not been compromised is available.
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!