在Linux環境下,使用OpenSSL進行數字簽名通常涉及以下步驟:
生成密鑰對:
openssl genpkey
命令生成私鑰。openssl rsa
或openssl ec
命令從私鑰派生公鑰。準備要簽名的數據:
data.txt
。生成數字簽名:
以下是具體的命令示例:
# 生成RSA私鑰
openssl genpkey -algorithm RSA -out rsa_private_key.pem -pkeyopt rsa_keygen_bits:2048
# 從私鑰派生公鑰
openssl rsa -pubout -in rsa_private_key.pem -out rsa_public_key.pem
假設你要簽名的數據保存在data.txt
文件中。
# 使用SHA-256哈希算法對數據進行簽名
openssl dgst -sha256 -sign rsa_private_key.pem -out signature.bin data.txt
為了驗證簽名,你需要使用公鑰和原始數據。
# 驗證簽名
openssl dgst -sha256 -verify rsa_public_key.pem -signature signature.bin data.txt
如果簽名有效,你會看到輸出類似于:
Verified OK
如果你更喜歡使用ECDSA密鑰對,可以按照以下步驟操作:
# 生成ECDSA私鑰
openssl ecparam -name secp256k1 -genkey -noout -out ecdsa_private_key.pem
# 從私鑰派生公鑰
openssl ec -in ecdsa_private_key.pem -pubout -out ecdsa_public_key.pem
# 使用SHA-256哈希算法對數據進行簽名
openssl dgst -sha256 -sign ecdsa_private_key.pem -out signature.bin data.txt
# 驗證簽名
openssl dgst -sha256 -verify ecdsa_public_key.pem -signature signature.bin data.txt
如果簽名有效,你會看到輸出類似于:
Verified OK
通過這些步驟,你可以在Linux環境下使用OpenSSL進行數字簽名和驗證。