OpenSSL是一个强大的加密工具包,可以用于实现数字签名。以下是使用OpenSSL实现签名的基本步骤:
生成私钥:
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
生成公钥:
openssl rsa -pubout -in private_key.pem -out public_key.pem
假设你有一个要签名的文件data.txt。
生成摘要:
openssl dgst -sha256 data.txt > digest.txt
使用私钥对摘要进行签名:
openssl pkeyutl -sign -in digest.txt -out signature.bin -inkey private_key.pem -sigopt rsa_padding_mode:pkcs1
假设你有一个签名文件signature.bin和一个公钥文件public_key.pem。
生成摘要:
openssl dgst -sha256 data.txt > digest.txt
使用公钥验证签名:
openssl pkeyutl -verify -in digest.txt -sigfile signature.bin -pubin -inkey public_key.pem -sigopt rsa_padding_mode:pkcs1
pkcs1填充模式。你可以根据需要更改填充模式,但pkcs1是最常用的。假设你有一个文件example.txt,以下是完整的签名和验证过程:
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in private_key.pem -out public_key.pem
openssl dgst -sha256 example.txt > example_digest.txt
openssl pkeyutl -sign -in example_digest.txt -out example_signature.bin -inkey private_key.pem -sigopt rsa_padding_mode:pkcs1
openssl dgst -sha256 example.txt > example_digest.txt
openssl pkeyutl -verify -in example_digest.txt -sigfile example_signature.bin -pubin -inkey public_key.pem -sigopt rsa_padding_mode:pkcs1
如果验证成功,你会看到输出Verified OK。
通过这些步骤,你可以使用OpenSSL实现数字签名和验证。