【问题标题】:Decrypt with the public key using openssl in commandline在命令行中使用 openssl 使用公钥解密
【发布时间】:2016-06-05 15:44:42
【问题描述】:

我想“手动”将消息的摘要/哈希与该摘要上的解密签名值进行比较。

为此,我想用公钥解密消息的签名值(签名摘要),该公钥属于签名摘要的私钥。

我有以下物品:

  • 消息的 base64 格式的摘要值(使用 SHA256 计算)
  • base64 格式的摘要上已使用私有签名的签名值 密钥(使用 SHA256 和 RSA 加密)
  • .pem 格式的公钥属于私钥
  • 我有实际的消息(它是 XML 格式,在文档的不同部分包含多个签名)。我已经使用 XML 安全库验证了签名。我只对使用公钥解密签名值感兴趣。

我有点不知道如何使用 openssl 来实现这一点。

我正在尝试对herehere 描述的命令进行变体,但是我有点迷路了。

我想我应该使用以下方法将签名从 base64 值转换为八位字节:

base64 --d sigfile > sigfile_octet?

然后我使用命令:

openssl rsautl -inkey pubkey.pem -pubin -in sigfile_octet

这会给我八位字节的解密签名值吗? 我需要执行哪些后续步骤才能将其与 base64 摘要进行比较?

附言我已经使用Aleksey's XML security library 验证了签名,所以我知道摘要应该与解密后的签名值匹配。

非常感谢您的帮助!!

亲切的问候,

迪德里克

【问题讨论】:

    标签: encryption command-line openssl digital-signature public-key


    【解决方案1】:

    使用dgst 命令,而不是rsautl

    openssl dgst -verify pubkey.pem -signature sigfile_octet message.txt
    

    这里,message.txt 是您要验证的消息。


    您可以使用rsautl“解密”签名,获取原始验证数据:

    openssl rsautl -verify -inkey pubkey.pem -pubin -in sigfile_octet
    

    这将产生签名的 DER 编码 ASN.1 结构。这是一个序列,其中包含所使用的散列算法的算法标识符,然后是散列本身。如果您希望 OpenSSL 打印此结构的人类可读视图,您可以将 -asn1parse 选项添加到 rsautl 命令。看起来像这样:

    0:d=0 hl=2 l= 49 缺点:序列 2:d=1 hl=2 l= 13 缺点:序列 4:d=2 hl=2 l= 9 prim: 对象:sha256 15:d=2 hl=2 l= 0 prim: NULL 17:d=1 hl=2 l= 32 prim: 八位字节串 0000 - c9 8c 24 b6 77 ef f4 48-60 af ea 6f 49 3b ba ec ..$.w..H`..oI;.. 0010 - 5b b1 c4 cb b2 09 c6 fc-2b bb 47 f6 6f f2 ad 31 [.......+.G.o..1

    如果您只想提取散列,而不是使用-asn1parse 选项,您可以将其通过管道传递给asn1parse 命令,这样您就可以从结构中提取元素。

    当您说您拥有“摘要上的签名值”时,我假设您拥有的是具有这种结构的真实签名,而不仅仅是使用私钥签名的原始哈希。如果不是这样,您可以发布一些示例输出。

    【讨论】:

    • 我不清楚该消息是否实际可用,无论如何问题中都没有说明。 Diederik,您能否指出是否是这种情况(请在问题中)。
    • 您好,erickson,感谢您的回答,但我不是在寻找关于签名有效性的真/假答案。我可以从 dgst 命令获得更多信息吗?我实际上想查看签名值的解密值。 @MaartenBodewes,是的,我有实际的消息,但是我已经能够验证签名(它在消息的不同部分有多个签名)。
    • @Diederik “消息”也是摘要/签名算法输入的技术术语。如何解析特定 (XML) 消息取决于您。但是好的,您指定要使用公钥执行教科书 RSA 解密(或者,实际上,只是模幂运算和 PKCS#1 未填充)。对。
    • @MaartenBodewes 好的,谢谢您的详细说明。经过几个步骤,我可以成功地在原始 xml 消息上手动计算摘要('使用 openssl dgst -sha256 消息')。但是,是的!我实际上正在寻找教科书 RSA 解密 :)
    • @Diederik 请查看我的更新,如果它解决了您的问题,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 2020-03-15
    • 2016-07-18
    • 2015-11-27
    相关资源
    最近更新 更多