Openssl是一個功能強大的開源工具庫,主要用于實現(xiàn)SSL和TLS協(xié)議,并且支持多種加密算法,其中包括數(shù)字簽名。以下是利用OpenSSL完成數(shù)字簽名的基本流程:
創(chuàng)建密鑰對
首先,需要創(chuàng)建一組公鑰與私鑰。私鑰用于簽名操作,而公鑰則用于確認簽名的有效性。
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 openssl rsa -pubout -in private_key.pem -out public_key.pem
制作數(shù)字簽名
運用私鑰對數(shù)據(jù)執(zhí)行簽名處理。
openssl dgst -sha256 -sign private_key.pem -out signature.bin data.txt
- -sha256 表示采用SHA-256哈希算法。
- -sign private_key.pem 指定使用的私鑰。
- -out signature.bin 定義輸出簽名文件的位置。
- data.txt 是待簽名的數(shù)據(jù)文檔。
核驗數(shù)字簽名
借助公鑰來檢查簽名是否準確無誤。
openssl dgst -sha256 -verify public_key.pem -signature signature.bin data.txt
- -verify public_key.pem 確定使用公鑰來進行核驗。
- -signature signature.bin 指定需要核驗的簽名文檔。
- data.txt 是原始數(shù)據(jù)文檔。
若核驗成功,則會顯示“Verified OK”。若核驗失敗,則會提示錯誤信息。
示例
假設(shè)有這樣一個名為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
-
生成數(shù)字簽名:
openssl dgst -sha256 -sign private_key.pem -out signature.bin example.txt
-
驗證數(shù)字簽名:
openssl dgst -sha256 -verify public_key.pem -signature signature.bin example.txt
按照上述步驟,您可以利用OpenSSL便捷地達成數(shù)字簽名及核驗的目標。