咱們的操做流程爲:算法
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