使用OpenSSL在Linux上實現數據完整性校驗通常涉及以下幾個步驟:
生成密鑰對(如果需要):
openssl genpkey -algorithm RSA -out rsa_key.pem 2048
openssl genpkey -algorithm EC -out ec_key.pem -pkeyopt ec_paramgen_curve:secp384r1
計算數據的哈希值:
openssl dgst -sha256 -binary file_to_check.txt | openssl enc -base64
這將輸出文件的SHA-256哈希值的Base64編碼。
使用公鑰驗證簽名(如果數據已簽名):
openssl dgst -sha256 -verify public_key.pem -signature signed_file.sig file_to_check.txt
如果簽名有效,OpenSSL將輸出“Verified OK”。
使用私鑰創建簽名(如果你需要簽名數據):
openssl dgst -sha256 -sign private_key.pem -out signed_file.sig file_to_check.txt
這將生成一個名為signed_file.sig
的簽名文件。
比較哈希值:
echo "expected_hash_value" | openssl dgst -sha256 -binary | openssl enc -base64
將expected_hash_value
替換為你預期的哈希值。如果兩個值匹配,則數據未被篡改。
使用HMAC進行消息認證(如果你需要驗證消息的來源和完整性):
echo -n "message_to_check" | openssl dgst -sha256 -hmac secret_key -binary | openssl enc -base64
這將輸出一個基于HMAC-SHA256算法的消息認證碼。
請記住,為了安全起見,你應該在安全的環境中生成和管理密鑰,并且只在必要時共享公鑰。私鑰應該始終保持機密。