【问题标题】:OpenSSL message digest creationOpenSSL 消息摘要创建
【发布时间】:2020-04-25 02:36:06
【问题描述】:

基本问题是我用“openssl smime”生成了一个签名文档并能够验证它,但我的伙伴不是(使用不同的软件)。所以我试图深入研究它,看看他和我的消息摘要是否相同。但是 - 我什至无法找出我的文档中实际(并且正确)使用的消息摘要。

我有一个名为“cleartext.txt”的文件,其中包含任意文本。然后我做

$ openssl smime -sign -md sha256 -nocerts -inkey as2.key -signer as2.crt -outform PEM < cleartext.txt > signature.txt
$ openssl sha256 cleartext.txt
$ openssl asn1parse -in signature.txt 

第二条语句生成哈希值:

SHA256(cleartext.txt)= c64df2df82cc1dab9f9b06d41fab458de976de7e149fe0854fe125a96ef151dd

最后一条语句向我展示了我的证书的详细信息(所以至少这里必须有一些东西)加上

  251:d=8  hl=2 l=   9 prim: OBJECT            :pkcs7-data
  262:d=6  hl=2 l=  28 cons: SEQUENCE          
  264:d=7  hl=2 l=   9 prim: OBJECT            :signingTime
  275:d=7  hl=2 l=  15 cons: SET               
  277:d=8  hl=2 l=  13 prim: UTCTIME           :200107145037Z
  292:d=6  hl=2 l=  47 cons: SEQUENCE          
  294:d=7  hl=2 l=   9 prim: OBJECT            :messageDigest
  305:d=7  hl=2 l=  34 cons: SET               
  307:d=8  hl=2 l=  32 prim: OCTET STRING      [HEX DUMP]:0E68D5CC9A859736EEE842355C1FD73F3FC9B274657A97F4CAF38AD3344ACBC8
  341:d=6  hl=2 l= 121 cons: SEQUENCE          
  343:d=7  hl=2 l=   9 prim: OBJECT            :S/MIME Capabilities
  354:d=7  hl=2 l= 108 cons: SET               
  356:d=8  hl=2 l= 106 cons: SEQUENCE          
  358:d=9  hl=2 l=  11 cons: SEQUENCE          
  360:d=10 hl=2 l=   9 prim: OBJECT            :aes-256-cbc
  371:d=9  hl=2 l=  11 cons: SEQUENCE          
  373:d=10 hl=2 l=   9 prim: OBJECT            :aes-192-cbc
  384:d=9  hl=2 l=  11 cons: SEQUENCE          
  386:d=10 hl=2 l=   9 prim: OBJECT            :aes-128-cbc
  397:d=9  hl=2 l=  10 cons: SEQUENCE          
  399:d=10 hl=2 l=   8 prim: OBJECT            :des-ede3-cbc
  409:d=9  hl=2 l=  14 cons: SEQUENCE          
  411:d=10 hl=2 l=   8 prim: OBJECT            :rc2-cbc
  421:d=10 hl=2 l=   2 prim: INTEGER           :80
  425:d=9  hl=2 l=  13 cons: SEQUENCE          
  427:d=10 hl=2 l=   8 prim: OBJECT            :rc2-cbc
  437:d=10 hl=2 l=   1 prim: INTEGER           :40
  440:d=9  hl=2 l=   7 cons: SEQUENCE          
  442:d=10 hl=2 l=   5 prim: OBJECT            :des-cbc
  449:d=9  hl=2 l=  13 cons: SEQUENCE          
  451:d=10 hl=2 l=   8 prim: OBJECT            :rc2-cbc
  461:d=10 hl=2 l=   1 prim: INTEGER           :28
  464:d=5  hl=2 l=  13 cons: SEQUENCE          
  466:d=6  hl=2 l=   9 prim: OBJECT            :rsaEncryption
  477:d=6  hl=2 l=   0 prim: NULL              
  479:d=5  hl=4 l= 256 prim: OCTET STRING      [HEX DUMP]:4CBEA622925F2CD899D2B5A0D26F831C0D63DE88FC5CC1E89F8F164E84526E49194AD537426378D6932DA066425A117B9FA96A70E2000F603449095AAF8E0B93D0D4EB26FC2B3D86726F94928882C37ACEF0537555DEB4AF3D63943A05A109D49B941C8131A9734C15BA7418F2D34E6B63B710E975EDE1EB9A71A40C251D6D72A5C802F3CDAE123E5E47413DC414DF8A2B0BB6E225145224C33E64245F6E4BD3EC3A60E0B0D6FAA8F9BE69BFA0B27E4A3326E819EF8A1C13738CA1A02D08F74D22C52ABA84D6FD26BE8EA6461251162CD751DC6DC2A30FB45211AC28B371F5FEDB57C3845DA04C4C0FFC40760C623C574471CECD4681E7755277B8BFD8F31730

为什么我用这些命令之一得到“c64df2...”而另一个命令得到“0e68d5...”?如果我什至无法在明文上重现哈希值,我怎么能期望我的合作伙伴验证我的签名?

【问题讨论】:

    标签: hash openssl sha256 smime


    【解决方案1】:

    经过一些阅读和反复试验后找到的解决方案:RFC2049 在第 4(2) 章中要求将纯文本转换为规范形式,即使用 CRLF 作为行尾。

    openssl smime -sign 对其输入文件进行静默转换,但 openssl sha256 不会。

    只要我自己使用 CRLF,结果就和预期的一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-02
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      相关资源
      最近更新 更多