Web3j

如何從 Web3j 中的私鑰獲取公鑰

  • March 27, 2019

我正在通過 web3j 開發 Dapp,並嘗試將私鑰轉換為公鑰。我發現這個問題這個問題提供了一種在 ECKey 類中將私鑰轉換為公鑰的方法,但我還需要添加 Ethereumj 核心作為依賴項。

我想知道 web3j 中是否有一種方法而不是 ethereumj 將私鑰轉換為公鑰。

如果沒有,他們為什麼不將此邏輯作為函式添加到 web3j 中?

是的,您可以使用以下程式碼進行操作

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;
}

我在這裡發布了我自己的答案,以防其他人有問題。Web3j 提供了一個 ECKeyPair 作為工具來處理密鑰和地址轉換。請看下面的程式碼:

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);

引用自:https://ethereum.stackexchange.com/questions/51853