【发布时间】:2019-08-02 07:23:25
【问题描述】:
我正在编写一个将比特币 privateKey 转换为 WIF 格式的 Java 程序。 不幸的是,我得到了错误的 SHA256 哈希值。
我的代码基于this tutorial。
当我散列一个像这样的值时:
800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
我得到这样的结果:
e2e4146a36e9c455cf95a4f259f162c353cd419cc3fd0e69ae36d7d1b6cd2c09
代替:
8147786C4D15106333BF278D71DADAF1079EF2D2440A4DDE37D747DED5403592
这是我的一段代码:
public String getSHA(String value){
String hash = hash = DigestUtils.sha256Hex(value.getBytes());
System.out.println(hash);
return hash;
}
我使用了这个库:import org.apache.commons.codec.digest.DigestUtils;
当然我在网上搜索了这个问题,我找到了this site。
在那个网站上,有两个文本框 - 字符串哈希和二进制哈希。 使用字符串哈希,我得到了与我的 Java 程序相同的错误结果。 但是,使用二进制哈希,我得到了正确的结果。
我的问题是: 二进制和字符串哈希有什么区别? 如何在我的 Java 方法中实现二进制哈希?
【问题讨论】:
-
可能您使用 800C28... 作为字符串,但它应该是字节数组 0x80,0x0C,0x28,... stackoverflow.com/questions/321370/…