咱们的操做流程为:算法
key.pem
(也称私钥,密钥对)。key.pem
中导出公钥pubkey.pem
。pubkey.pem
对文件test.txt
进行加密,获得密文test.enc
。key.pem
对test.enc
进行解密,获得译文test.dec
。test.txt
和test.dec
,应该是同样的。key.pem
对test.txt
进行签名,获得test.sig
。pubkey.pem
对test.txt
的签名test.sig
进行验签。key.pem ====导出=====> pubkey.pem pubkey.pem + text.txt ===公钥加密===> test.enc key.pem + test.enc ===私钥解密===> test.dec key.pem + test.txt ===私钥签名===> test.sig pubkey.pem + test.txt + test.sig ==> 验证签名
命令以下:bash
# 生成密钥对 openssl genrsa -out key.pem # 导出公钥 openssl rsa -in key.pem -pubout -out pubkey.pem
参数说明:测试
# 生成一个待加密的测试文件 echo "hello, world" > test.txt # 公钥加密 openssl rsautl -encrypt -pubin -inkey pubkey.pem -in test.txt -out test.enc openssl rsautl -decrypt -inkey key.pem -in test.enc -out test.dec
参数说明:加密
核对文件code
# 若是没有任何输出,则文件相同 cmp test.txt test.dec
# 签名 openssl dgst -sign key.pem -sha256 -out test.sig test.txt # 验签 openssl dgst -verify pubkey.pem -sha256 -signature test.sig test.txt
参数说明:md5
# 查看私钥信息 openssl rsa -in key.pem -noout -text # 查看公钥信息 openssl rsa -pubin -in pubkey.pem -noout -text
参数说明:ssl