给定三条信息:消息(字符串)、签名(字符串)和公共(public)地址(字符串),我想验证签名。在 Javascript、Python 和 PHP 库中,这是一个简单的方法调用。然而,在 BitcoinJ (Java) 中,我无法想出一个简单的解决方案或示例。
首先,我只想验证签名。 BitcoinJ 有点过分了,但它是我能找到的唯一的 Java 库。它似乎也没有直接的方法调用来满足我的需要。有一个方法调用需要公钥,但我有公共(public)地址。网络上的讨论表明公钥可以来自签名。然而,这似乎并不像听起来那么简单。 Java 也需要字节而不是字符串。听起来很容易,但努力却没有效果。我找不到任何例子。
那么有人可以为我提供一个使用上述三条信息在 Java(BitcoinJ 或其他)中进行简单消息验证的示例吗? TIA!
最佳答案
发布我自己的答案:
String loginSig = ""; // base64 encoded signature
String pubAddress = ""; // bitcoin public address
String message = "Hello World";
ECKey result = new ECKey().signedMessageToKey(message, loginSig);
if (pubAddress.equals(result.toAddress(NetworkParameters.prodNet()).toString())) {
// success!
}
关于java - BitcoinJ 和消息验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32085117/