我遇到了验证使用OpenSSL生成的SHA256哈希签名的问题。
当我调用
时openssl dgst -sha256 -binary -out hash.sha256 in_file
和我(xxd -g 1 hash.sha256),它看起来像这样 -
00000000: d7 e6 1b 81 5c 32 28 30 7b 7b 45 e1 ef 40 6b 93
00000010: 34 67 d0 a4 ee c0 64 d1 20 e7 c1 c3 a9 f2 a9 a9
同样,当我调用
时openssl dgst -sha256 -out hash.sha256 -sign private.pem in_file
一次哈希并签名,然后使用
进行验证openssl rsautl -in hash.sha256 -out hash.verified -inkey private.pem -verify
和(xxd -g 1 hash.verified),(我相信它应该与上面的hash.sha256相同)我看到了
00000000: 30 31 30 0d 06 09 60 86 48 01 65 03 04 02 01 05
00000010: 00 04 20 d7 e6 1b 81 5c 32 28 30 7b 7b 45 e1 ef
00000020: 40 6b 93 34 67 d0 a4 ee c0 64 d1 20 e7 c1 c3 a9
00000030: f2 a9 a9
如果仔细观察,似乎hash.verified前面有19个字节的数据,后跟正确的哈希值(或者至少与上面的hash.sha256相同)。
什么是我的哈希?