本文介紹如何在Debian系統中利用OpenSSL進行數據加密和解密,涵蓋對稱加密(AES-256-CBC)和非對稱加密(RSA),以及數字簽名。
一、 OpenSSL安裝
首先,請確保已安裝OpenSSL。若未安裝,請執行以下命令:
sudo apt update sudo apt install openssl
二、 對稱加密 (AES-256-CBC)
對稱加密使用同一密鑰進行加密和解密。以下示例使用AES-256-CBC算法:
加密:
echo "這是一個秘密信息" | openssl enc -aes-256-cbc -a -salt -pbkdf2 -out 加密信息.enc
參數說明:-aes-256-cbc 指定算法;-a 使用Base64編碼;-salt 添加鹽值增強安全性;-pbkdf2 使用PBKDF2密鑰派生;-out 加密信息.enc 指定輸出文件名。
解密:
openssl enc -d -aes-256-cbc -a -pbkdf2 -in 加密信息.enc -out 解密信息.txt
參數說明:-d 解密模式;-in 加密信息.enc 指定輸入文件名;-out 解密信息.txt 指定輸出文件名。
三、 非對稱加密 (RSA)
非對稱加密使用公鑰加密,私鑰解密。
1. 生成RSA密鑰對:
openssl genpkey -algorithm RSA -out rsa_key.pem -aes256
參數說明:-algorithm RSA 指定RSA算法;-out rsa_key.pem 指定私鑰文件名;-aes256 使用AES-256加密私鑰。
2. 提取公鑰:
openssl rsa -pubout -in rsa_key.pem -out rsa_public_key.pem
參數說明:-pubout 提取公鑰;-in rsa_key.pem 指定私鑰文件名;-out rsa_public_key.pem 指定公鑰文件名。
3. 加密:
echo "這是一個秘密信息" | openssl pkeyutl -encrypt -pubin -inkey rsa_public_key.pem -out 加密信息.enc
參數說明:-encrypt 加密模式;-pubin 使用公鑰加密;-inkey rsa_public_key.pem 指定公鑰文件名;-out 加密信息.enc 指定輸出文件名。
4. 解密:
openssl pkeyutl -decrypt -inkey rsa_key.pem -in 加密信息.enc -out 解密信息.txt
參數說明:-decrypt 解密模式;-inkey rsa_key.pem 指定私鑰文件名;-in 加密信息.enc 指定輸入文件名;-out 解密信息.txt 指定輸出文件名。
四、 數字簽名
數字簽名用于驗證數據完整性和來源。
1. 生成RSA密鑰對 (如果尚未生成): (與非對稱加密步驟相同)
2. 生成簽名:
echo "這是一個秘密信息" | openssl dgst -sha256 -sign rsa_key.pem -out 簽名.bin
參數說明:-sha256 使用SHA-256哈希算法;-sign rsa_key.pem 使用私鑰簽名;-out 簽名.bin 指定簽名文件名。
3. 驗證簽名:
openssl dgst -sha256 -verify rsa_public_key.pem -signature 簽名.bin -data "這是一個秘密信息"
參數說明:-verify rsa_public_key.pem 使用公鑰驗證;-signature 簽名.bin 指定簽名文件名;-data “這是一個秘密信息” 指定要驗證的數據。
通過以上步驟,您可以在Debian系統中有效地使用OpenSSL進行數據加密、解密和數字簽名。 請根據您的具體需求選擇合適的加密方法。