So erhalten Sie den öffentlichen Schlüssel vom privaten Schlüssel in Web3j

Ich entwickle Dapp von web3j und versuche, den privaten Schlüssel in den öffentlichen Schlüssel umzuwandeln. Ich habe diese Frage gefunden , die eine Möglichkeit bietet, den privaten Schlüssel in der Klasse ECKey in einen öffentlichen Schlüssel umzuwandeln, aber ich muss auch den Ethereumj-Kern als Abhängigkeit hinzufügen.

Ich frage mich, ob es in web3j statt in ethereumj eine Methode gibt, um den privaten Schlüssel in den öffentlichen Schlüssel umzuwandeln.

Wenn dies nicht der Fall ist, warum fügen sie diese Logik nicht als Funktion zu web3j hinzu?

Antworten (2)

Ja, Sie können dies mit folgendem Code tun

import org.web3j.crypto.Credentials;
import org.web3j.crypto.ECKeyPair; 

public static String getPublicKeyInHex(String privateKeyInHex) {
    BigInteger privateKeyInBT = new BigInteger(privateKeyInHex, 16);
    ECKeyPair aPair = ECKeyPair.create(privateKeyInBT);
    BigInteger publicKeyInBT = aPair.getPublicKey();
    String sPublickeyInHex = publicKeyInBT.toString(16);
    return sPublickeyInHex;
}

Ich habe meine eigene Antwort hier gepostet, falls jemand anderes die Frage hat. Web3j stellt ein ECKeyPair als Dienstprogramm bereit, um die Schlüssel- und Adresskonvertierung zu verarbeiten. Bitte beachten Sie die folgenden Codes:

String privateKey = "{your private key}";
Credentials cs = Credentials.create(privateKey);

String privateKey = cs.getEcKeyPair().getPrivateKey().toString(16);
String publicKey = cs.getEcKeyPair().getPublicKey().toString(16);
String addr = cs.getAddress();

System.out.println("Private key: " + privateKey);
System.out.println("Public key: " + publicKey);
System.out.println("Address: " + addr);