在Linux上使用OpenSSL进行数字签名,可以按照以下步骤操作:
生成私钥:
openssl genpkey -algorithm RSA -out private_key.pem -aes256
这将生成一个2048位的RSA私钥,并使用AES-256加密保护私钥文件。
提取公钥:
openssl rsa -in private_key.pem -pubout -out public_key.pem
这将从私钥中提取公钥并保存到public_key.pem
文件中。
生成摘要:
openssl dgst -sha256 -binary input_file > digest.bin
这将计算input_file
的SHA-256摘要,并将其保存到digest.bin
文件中。
使用私钥对摘要进行签名:
openssl pkeyutl -sign -in digest.bin -out signature.bin -inkey private_key.pem
这将使用私钥对摘要进行签名,并将签名结果保存到signature.bin
文件中。
提取签名中的摘要:
openssl pkeyutl -verify -in signature.bin -inkey public_key.pem -pubin -out verified_digest.bin
这将从签名文件中提取摘要,并将其保存到verified_digest.bin
文件中。
比较原始摘要和验证后的摘要:
diff digest.bin verified_digest.bin
如果两个文件内容相同,则签名验证成功;否则,签名验证失败。
假设我们有一个名为example.txt
的文件,我们希望对其进行签名并验证签名。
生成密钥对:
openssl genpkey -algorithm RSA -out private_key.pem -aes256
openssl rsa -in private_key.pem -pubout -out public_key.pem
对文件进行签名:
openssl dgst -sha256 -binary example.txt > digest.bin
openssl pkeyutl -sign -in digest.bin -out signature.bin -inkey private_key.pem
验证签名:
openssl pkeyutl -verify -in signature.bin -inkey public_key.pem -pubin -out verified_digest.bin
diff digest.bin verified_digest.bin
通过这些步骤,你可以在Linux上使用OpenSSL进行数字签名和验证。