仅使用公钥在高清钱包中生成以太坊地址(bitcoinj/web3j)

fkvaft9z  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(347)

我试图为用bitcoinj库实现的高清钱包密钥生成以太坊地址,但我弄糊涂了:

DeterministicSeed seed = new DeterministicSeed("some seed code here", null, "", 1409478661L);
DeterministicKeyChain chain = DeterministicKeyChain.builder().seed(seed).build();
DeterministicKey addrKey = chain.getKeyByPath(HDUtils.parsePath("M/44H/60H/0H/0/0"), true);
System.out.println("address from pub=" + Keys.getAddress(Sign.publicKeyFromPrivate(addrKey.getPrivKey())));

这段代码将相应地打印一个正确的以太坊地址https://iancoleman.io/bip39/. 这里一切都很好。
但是当我试图避免使用私钥并仅使用公钥生成非强化密钥时,我得到了不同的结果,即调用返回另一个结果:

System.out.println("address from pub=" + Keys.getAddress(addrKey.getPublicKeyAsHex()));

看起来问题出在“不同的公钥”中,即 Sign.publicKeyFromPrivate(addrKey.getPrivKey()) 以及 addrKey.getPublicKeyAsHex() 它们是不同的。我对密码学没有经验,所以这可能是个愚蠢的问题。。。但我很感激你的建议。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题