【问题标题】:Java verify digital signature in openssl [duplicate]Java在openssl中验证数字签名[重复]
【发布时间】:2017-01-28 11:20:19
【问题描述】:

使用this 教程,我创建了一个Java 程序,它可以使用SHA256withRSA 算法对文档进行签名。在输出中,我得到一个公钥和一个签名文件。

我尝试使用 openssl 验证我的文件,但我不能...我在网上搜索,发现我可能需要一个标准的 .pem 密钥,所以我的问题是:如何转换我的 pem 格式的关键?或者我可以在 Java 中生成 .pem 密钥吗?如果方法不对,我该如何验证我的签名?

【问题讨论】:

  • 尝试使用密钥存储资源管理器 (keystore-explorer.org),它可能会将密钥/证书转换为所需的格式
  • 您应该提供用于生成签名的 Java 代码,以及用于验证签名的 OpenSSL 命令。

标签: java openssl digital-signature verify


【解决方案1】:

PEM 文件包含以 base64 编码并分成 64 个字符的行的公钥二进制数据。该文件还有标题-----BEGIN PUBLIC KEY----- 和页脚-----END PUBLIC KEY-----

Java 没有 PEM 的本机转换器,但您可以使用 bouncycastle

PEMWriter pemWriter = new PEMWriter(new FileWriter(file));
pemWriter.writeObject(publicKey);
pemWriter.flush();
pemWriter.close();

或者,您可以使用二进制密钥格式使用 openssl 验证签名

  -keyform DER

然后将你的 publicKey 的内容保存在一个文件中

 byte publicKeyDer[] = publicKey.getEncoded()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    相关资源
    最近更新 更多