OpenSSL 是一个强大的开源加密工具包,提供了多种加密算法的实现。以下是使用 OpenSSL 进行基础加密和解密操作的指南。
对称加密使用相同的密钥进行加密和解密。
# 使用 AES-256-CBC 加密文件
openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.enc
# 解密文件
openssl enc -d -aes-256-cbc -in encrypted.enc -out decrypted.txt
常用参数:
- -salt
:添加随机盐值增强安全性
- -in
:输入文件
- -out
:输出文件
- -k
或 -pass
:指定密码(不建议在命令行直接使用,会留在历史记录中)
# 使用 3DES
openssl enc -des3 -salt -in plaintext.txt -out encrypted.des3
# 使用 Camellia
openssl enc -camellia-256-cbc -salt -in plaintext.txt -out encrypted.camellia
非对称加密使用公钥加密,私钥解密。
# 生成 RSA 私钥 (2048位)
openssl genrsa -out private.key 2048
# 从私钥提取公钥
openssl rsa -in private.key -pubout -out public.key
# 使用公钥加密
openssl rsautl -encrypt -inkey public.key -pubin -in plaintext.txt -out encrypted.rsa
# 使用私钥解密
openssl rsautl -decrypt -inkey private.key -in encrypted.rsa -out decrypted.txt
# SHA-256 哈希
openssl dgst -sha256 file.txt
# MD5 哈希 (不推荐用于安全用途)
openssl dgst -md5 file.txt
# 创建签名
openssl dgst -sha256 -sign private.key -out signature.bin file.txt
# 验证签名
openssl dgst -sha256 -verify public.key -signature signature.bin file.txt
# 生成自签名证书
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
# 查看证书信息
openssl x509 -in cert.pem -text -noout
-k
参数传递密码,可以使用 -pass
参数从文件或环境变量获取# 使用 PBKDF2 密钥派生函数
openssl enc -aes-256-cbc -pbkdf2 -iter 100000 -salt -in file.txt -out file.enc
# 加密并 Base64 编码输出
openssl enc -aes-256-cbc -salt -a -in plaintext.txt -out encrypted.b64
OpenSSL 的功能非常丰富,以上只是基础加密解密操作的简介。根据具体需求,可以进一步探索其更高级的功能。