我试图为用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()
它们是不同的。我对密码学没有经验,所以这可能是个愚蠢的问题。。。但我很感激你的建议。
暂无答案!
目前还没有任何答案,快来回答吧!