Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从一个公钥生成多个比特币地址?_Java_Hash_Bitcoin_Bitcoinj - Fatal编程技术网

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对其进行了哈希运算@Muhammadaad
MessageDigest=MessageDigest.getInstance(“SHA-256”);String ripe=Base58.encode(ripemd160.getHash(digest.digest(xpub.getBytes(StandardCharsets.utf8)));System.out.println(“成熟”+成熟)但它没有返回有效地址