java - BitcoinJ 和消息验证

标签 java message signature verification bitcoinj

给定三条信息:消息(字符串)、签名(字符串)和公共(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/

相关文章:

java - java while循环中隐式变量的名称是什么?

Java 线程基础

performance - C++ 中的高效消息工厂和处理程序

java - SOAPMessage GZIP 实现

email - 使用 Google 字体进行电子邮件签名

java - 将许多记录写入 excel 文件会变得非常慢

java - 尝试使用JFXPasswordField Jfoenix JAVA时出错

ios 将消息传递给模态视图

protocol-buffers - 如何为 protobuf 消息添加签名?

java - 如何验证发送 POST 请求的应用程序的身份