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