Openssl是一個功能強大的開源工具庫,主要用于實現SSL和TLS協議,并且支持多種加密算法,其中包括數字簽名。以下是利用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
制作數字簽名
運用私鑰對數據執行簽名處理。
openssl dgst -sha256 -sign private_key.pem -out signature.bin data.txt
- -sha256 表示采用SHA-256哈希算法。
- -sign private_key.pem 指定使用的私鑰。
- -out signature.bin 定義輸出簽名文件的位置。
- data.txt 是待簽名的數據文檔。
核驗數字簽名
借助公鑰來檢查簽名是否準確無誤。
openssl dgst -sha256 -verify public_key.pem -signature signature.bin data.txt
若核驗成功,則會顯示“Verified OK”。若核驗失敗,則會提示錯誤信息。
示例
假設有這樣一個名為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 -sign private_key.pem -out signature.bin example.txt
-
驗證數字簽名:
openssl dgst -sha256 -verify public_key.pem -signature signature.bin example.txt
按照上述步驟,您可以利用OpenSSL便捷地達成數字簽名及核驗的目標。