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;