Wie kann ich einen privaten Schlüssel im bitcoinJ - ECKey-Konstruktor hartcodieren?

Kann jemand bitte erklären, wie man den folgenden Konstruktor verwendet ( hier aufgeführt ):

ECKey(BigInteger priv, org.spongycastle.math.ec.ECPoint pub) 

Angenommen, mein privater Schlüssel ist: priv = "L4...5".

  1. Wie bekomme ich die große ganzzahlige Darstellung davon (mit anderen Worten, und wenn ich es richtig verstanden habe, gibt es eine Funktion, von der nach check58? biginteger) und

  2. Was ist mit dem zweiten Parameter?

Danke

Antworten (2)

Wenn Sie nur ein ECKeyObjekt für diesen privaten Schlüssel erhalten möchten, dann hat Bitcoinj eine DumpedPrivateKeyKlasse für genau solche Gelegenheiten.

import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.DumpedPrivateKey;
import org.bitcoinj.params.MainNetParams;

public class Example {

    public static void main(String[] args) {
        String priv = "L4...5";
        ECKey key = DumpedPrivateKey.fromBase58(MainNetParams.get(), priv).getKey();
    }

}

Wenn Sie explizit einen Konstruktor verwenden möchten ECKey, sollten Sie in der Lage sein, den benötigten Code von hier zu erhalten:

https://github.com/bitcoinj/bitcoinj/blob/release-0.14/core/src/main/java/org/bitcoinj/core/DumpedPrivateKey.java#L70-L91


In Bezug auf den von Ihnen aufgelisteten Konstruktor handelt es sich um einen geschützten Konstruktor, sodass Sie ihn wahrscheinlich nicht verwenden möchten. Es listet einen privaten Schlüssel und öffentliche Schlüsselparameter auf. Der private Schlüssel kann null sein, wenn die ECKeyInstanz nur zum Verifizieren von Signaturen verwendet wird und sie nicht tatsächlich erzeugt. Der öffentliche Schlüssel darf nicht null sein und spart Zeit, da der öffentliche Schlüssel nicht neu berechnet werden muss, was ein CPU-intensiver Vorgang ist.

Beachten Sie, dass die meisten public ECKeyKonstruktoren veraltet sind. Die bevorzugte Methode zum Erstellen der ECKeyObjekte ist jetzt die Verwendung der statischen Factory-Methoden.

Vielen, vielen, vielen Dank ... hat bei mir gut funktioniert ...

Sie können die öffentliche statische Methode von ECKeyclass, fromPrivate(byte[] privKeyBytes, boolean komprimiert) aufrufen. Daraus wird der öffentliche Schlüssel berechnet (langsam), entweder komprimiert oder nicht. Z.B.,

        String privateKey = "Your Private Key";
        byte[] b = privateKey.getBytes();
        ECKey key = ECKey.fromPrivate(b, true);

oder

BigInteger privKey = Base58.decodeToBigInteger(privateKey );
key = ECKey.fromPrivate(privKey);

https://bitcoinj.github.io/javadoc/0.13/org/bitcoinj/core/ECKey.html