![Openssl 使用签名验证文件](https://linux22.com/image/1504027/Openssl%20%E4%BD%BF%E7%94%A8%E7%AD%BE%E5%90%8D%E9%AA%8C%E8%AF%81%E6%96%87%E4%BB%B6.png)
我有这种格式的文件签名。这是什么格式?如何使用 openssl 命令行验证文件
--=</Begin Signed File Fingerprint\>=--
Fingerprint Length: 000876
Key: label_4096
Hash: sha512
Signature: LJh6yt9PkAu4UGL7X0wCBmgfKDjA4Hv1i97K/glPmfJvB6pNPxrBDKPrVgsz7qNdP+mfOazHZcHmQyAAmpHoG/ztJzqbcMOFK8dYD8lqqu4O9O1Guhmx9WP3E47BI/Sby1OSqAeEu7fWsp+i3fUYeOujozBQ7oKULEIvxh61L/D9vDzRmm3UwD52I5g/PNwv1t4Llmqxg25uE9orn2u8cg40qmK1wyZiztOyIO8a4v42aEzRqxp9g//lN/+rsn9Ci4tz6XbIBPDqpYyXgYCtMf0f3N5QijlSt2bi97vzOVDFiyqAAIZL827tW+wFwaIMpmPZAtBBfSEBhY8VUlEd9fiZVuPo/RvC8NLgZphNa2PhergItu1MoKKv/fuwh8qVmAtMCp1FreTtky4hXiaxrq05Aun8Iyyh/lEx1t8M4zBpRnvCEexx0Htj24800bi4fpKacIMQh7HD0oC+tNCH3vlmRihd4ZZ2D8LrHnH+fHtdCpHQJoKYfobIbskQpVvK7eekyuG0lHPhAVwG4+Dh8Re/PugKPgmg0EcT0bp7g4RaiUDMzkD/zlRJSBM3pQX98EJFy1U38tkYkTO1m5aFUIgsy8YADpMfCyLjzJFA7O0E9SOk3dXCpYQ9zL9hN8MStJluNvhJBEjDq470iWPeOo3xApdeZr3YhEPGVxxuFL0=
Fingerprint Length: 000876
--=</End Signed File Fingerprint\>=--
如果我采用签名:部分并使用命令
openssl dgst -sha512 -verify -inkey key.pub -signature <signature content in the above file> <filetoverify>
它验证了。如何让 openssl 直接读取文件
答案1
如果您使用的是 Linux,则应该能够在命令行中使用 grep 和 cut 执行此操作。这将从文本文件中获取签名值:
-signature `cat sigfile.sig | grep 'Signature: ' | cut -d: -f2-`
最终命令将是这样的
openssl dgst -sha512 -verify -inkey key.pub -signature `cat sigfile.sig | grep 'Signature: ' | cut -d: -f2-` filetoverify
可能有更简化的方法来实现这一点,但我对 openssl 并不太熟悉。