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