qGSIb3DQEBAQUAA4GNADCBiQKBgQCzVDmu6Cf2QF7cERCGYU3B8Epm
6pkkpMZFgotphXMgAmBBNJbhSi7qPH4R5JlEm1ZXPr5DZH/pyJBWQhiiHGeUAOve
+GOgvt9Rk25r7OEWYvn/GCr/JBfLBGqwtlzn/t2s2x04IooshsGkOd6YpZoztkED
tu2gKHedFczF607IvwIDAQAB
-----END PUBLIC KEY-----
摘要计算
创建一个内容是 1234
的文本文件 hello.txt。用 OpenSSL 计算它的 SHA256 摘要(SHA256 是 jarsigner 的默认摘要算法):
$ cat hello.txt
1234
$ openssl dgst -SHA256 -out hello.sha256 hello.txt
$ cat hello.sha256
SHA256(hello.txt)= a883dafc480d466ee04e0d6da986bd78eb1fdd2178d04693723da3a8f95d42f4
签名和验证
对摘要文件 hello.sha256 进行签名:
$ openssl rsautl -sign -in hello.sha256 -out hello.sign -inkey key.pem
用公钥对签名进行验证:
$ openssl rsautl -verify -in hello.sign -inkey pub-key.pem -pubin
SHA256(hello.txt)= a883dafc480d466ee04e0d6da986bd78eb1fdd2178d04693723da3a8f95d42f4
用公钥验证必须加上 -pubin
参数。 用私钥对签名进行验证:
$ openssl rsautl -verify -in hello.sign -inkey key.pem
SHA256(hello.txt)= a883dafc480d466ee04e0d6da986bd78eb1fdd2178d04693723da3a8f95d42f4
验证的STD输出与摘要文件 hello.sha256 的内容一样,说明验证可以通过。