在Linux中使用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
genpkey命令用于生成私鑰。-algorithm RSA指定使用RSA算法。-out private_key.pem指定輸出文件名。-pkeyopt rsa_keygen_bits:2048設置RSA密鑰的長度為2048位。rsa -pubout命令用于從私鑰生成公鑰。-in private_key.pem指定輸入的私鑰文件。-out public_key.pem指定輸出的公鑰文件。假設你有一個文件message.txt需要簽名。
使用私鑰對數據進行簽名,并生成一個簽名文件。
openssl dgst -sha256 -sign private_key.pem -out signature.bin message.txt
dgst命令用于計算文件的摘要。-sha256指定使用SHA-256哈希算法。-sign private_key.pem指定用于簽名的私鑰文件。-out signature.bin指定輸出簽名文件的文件名。message.txt是你要簽名的文件。為了驗證簽名,你需要使用公鑰和原始文件。以下是驗證簽名的命令:
openssl dgst -sha256 -verify public_key.pem -signature signature.bin message.txt
-verify public_key.pem指定用于驗證的公鑰文件。-signature signature.bin指定要驗證的簽名文件。message.txt是原始文件。如果簽名有效,命令將輸出Verified OK。如果簽名無效,將輸出Verification Failure。
通過以上步驟,你可以使用OpenSSL輕松地進行數字簽名和驗證操作。