OpenSSL經常使用命令快速上手

OpenSSL經常使用命令快速上手

RSA篇

咱們的操做流程爲:算法

  1. 生成RSA密鑰key.pem(也稱私鑰,密鑰對)。
  2. key.pem中導出公鑰pubkey.pem
  3. 使用公鑰pubkey.pem對文件test.txt進行加密,獲得密文test.enc
  4. 使用私鑰key.pemtest.enc進行解密,獲得譯文test.dec
  5. 對比test.txttest.dec,應該是同樣的。
  6. 使用key.pemtest.txt進行簽名,獲得test.sig
  7. 使用pubkey.pemtest.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

1. 生成密鑰對並導出公鑰

# 生成密鑰對
openssl genrsa -out key.pem

# 導出公鑰
openssl rsa -in key.pem -pubout -out pubkey.pem

參數說明:測試

  • -out: 指定輸出的文件
  • -in: 指定輸入的文件
  • -pubout: 指定輸出公鑰。若是不加該參數,默認輸出的爲私鑰

2. 加解密操做

# 生成一個待加密的測試文件
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

參數說明:加密

  • -encrypt: 加密操做
  • -decrypt: 解密操做
  • -pubin: 指定輸入公鑰。若是不加該參數,則認爲輸入的爲私鑰
  • -inkey: 密鑰文件

覈對文件code

# 若是沒有任何輸出,則文件相同
cmp test.txt test.dec

3. 簽名、驗籤

# 簽名
openssl dgst -sign key.pem -sha256 -out test.sig test.txt
# 驗籤
openssl dgst -verify pubkey.pem -sha256 -signature test.sig test.txt

參數說明:md5

  • -sign: 使用私鑰簽名
  • -verify: 使用公鑰驗籤
  • -sha256: 摘要算法,也能夠爲md5/sha1/sha384/sha512等,簽名驗籤使用的摘要算法應相同
  • -signature: 待驗證的簽名文件

4. 查看密鑰信息

# 查看私鑰信息
openssl rsa -in key.pem -noout -text

# 查看公鑰信息
openssl rsa -pubin -in pubkey.pem -noout -text

參數說明:ssl

  • -noout: 不打印密鑰數據
  • -text: 以文本方式打印密鑰信息
相關文章
相關標籤/搜索