本文介绍如何在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进行数据加密、解密和数字签名。 请根据您的具体需求选择合适的加密方法。