Author

Topic: C# Public Key von Private Key VERY SLOW (Read 941 times)

sr. member
Activity: 392
Merit: 268
Tips welcomed: 1CF4GhXX1RhCaGzWztgE1YZZUcSpoqTbsJ
August 20, 2015, 02: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.
legendary
Activity: 1764
Merit: 1007
August 07, 2015, 09:21:20 AM
#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
sr. member
Activity: 490
Merit: 258
August 01, 2015, 01: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);
sr. member
Activity: 490
Merit: 258
August 01, 2015, 12:51:06 PM
#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://bitcointalksearch.org/topic/c-compute-public-key-from-private-key-very-slow-10keyss-1141038
Jump to: