String address = Keys.toChecksumAddress(Keys.getAddress(ECKeyPair.create(Numeric.toBigInt(privateKey))));
解析:
Numeric.toBigInt(privateKey);
將私鑰先轉換16進位制的BigInt數。
ECKeyPair.create(BigInt bigint);
透過這個16進位制數建立金鑰對:
Keys.getAddress(ECKeyPair eckeyPair):
呼叫該方法,返回的引數其實已經是ETH地址,只是沒有以0x開頭,並且其中字母的大小寫未區分,如果將此地址拼接上0x是可以在ETH瀏覽器中查詢到該地址的。
最後,為了讓它看起來是ETH地址,我們需要完善它。
Keys.toChecksumAddress(String address);
至此,上面方法的返回值就是一個完整的ETH地址。
我將倒入的包名發在下面,有需要的可以參考一下。
import org.web3j.crypto.ECKeyPair;
import org.web3j.crypto.Keys;
import org.web3j.utils.Numeric;
String address = Keys.toChecksumAddress(Keys.getAddress(ECKeyPair.create(Numeric.toBigInt(privateKey))));
解析:
Numeric.toBigInt(privateKey);
將私鑰先轉換16進位制的BigInt數。
ECKeyPair.create(BigInt bigint);
透過這個16進位制數建立金鑰對:
Keys.getAddress(ECKeyPair eckeyPair):
呼叫該方法,返回的引數其實已經是ETH地址,只是沒有以0x開頭,並且其中字母的大小寫未區分,如果將此地址拼接上0x是可以在ETH瀏覽器中查詢到該地址的。
最後,為了讓它看起來是ETH地址,我們需要完善它。
Keys.toChecksumAddress(String address);
至此,上面方法的返回值就是一個完整的ETH地址。
我將倒入的包名發在下面,有需要的可以參考一下。
import org.web3j.crypto.ECKeyPair;
import org.web3j.crypto.Keys;
import org.web3j.utils.Numeric;