Java 如何从一个公钥生成多个比特币地址?
我面临一个关于比特币地址生成的问题 我有Java 如何从一个公钥生成多个比特币地址?,java,hash,bitcoin,bitcoinj,Java,Hash,Bitcoin,Bitcoinj,我面临一个关于比特币地址生成的问题 我有公钥: String xpub"xpub661MyMwAqRbcGJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 我想从xpub生成多个地址 我正在使用bitcoinJ库 ECKey key=ECKey.fromPublicOnly(Base58.decode(xpub)); 它引发了以下例外情况: 未压缩编码的长度不正确 我读过很多文章,发现Ripemd160(SHA256(string)) 在散列之后,我在Base
公钥
:
String xpub"xpub661MyMwAqRbcGJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
我想从xpub
生成多个地址
我正在使用bitcoinJ
库
ECKey key=ECKey.fromPublicOnly(Base58.decode(xpub));
它引发了以下例外情况:
未压缩编码的长度不正确
我读过很多文章,发现Ripemd160(SHA256(string))代码>
在散列
之后,我在Base58
中编码
,但无法获得多个地址。我不确定我的答案是否正确,因为我不知道BitcoinJ库是如何工作的,只是为了获取信息:
比特币公钥与RSA公钥有点不同,您应该在字符串开头添加04
在您的情况下,键值应等于:
04XPUB661MYMWAQRBCGJXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
因此,生成的公钥将具有以下内容:
1字节0x04+65字节:32字节对应X坐标,32字节对应Y坐标
检查:
要测试/验证您的地址,您可以使用此网站:
祝你好运是的,我同意这个答案。我遵循这个答案,但没有在开头加上04。用你的手机再试一次。希望它能生成有效的地址,但仍然混淆了多个地址MessageDigest=MessageDigest.getInstance(“SHA-256”);String hash=Base58.encode(digest.digest(xpub.getBytes(StandardCharsets.UTF_8))代码>根据图片尝试此操作Ripemd160
?正如我看到的,您刚刚用SHA256对其进行了哈希运算,然后用Base58对其进行了哈希运算@MuhammadaadMessageDigest=MessageDigest.getInstance(“SHA-256”);String ripe=Base58.encode(ripemd160.getHash(digest.digest(xpub.getBytes(StandardCharsets.utf8)));System.out.println(“成熟”+成熟)代码>但它没有返回有效地址