在 Linux 下使用 OpenSSL 加密/解密文件,常见做法如下(以 AES-256-CBC 为例,这是最常用、兼容性最好的方式)。
openssl enc -aes-256-cbc -salt -in 原文件 -out 加密后文件
示例:
openssl enc -aes-256-cbc -salt -in test.txt -out test.txt.enc
执行后会提示输入密码:
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
✅ 说明:
-aes-256-cbc:加密算法-salt:增加安全性(防止字典攻击)-in:原文件-out:加密后的文件openssl enc -aes-256-cbc -d -in 加密后文件 -out 解密后文件
示例:
openssl enc -aes-256-cbc -d -in test.txt.enc -out test.txt.dec
⚠️ 不推荐在命令行直接写密码(会被 history 记录)
openssl enc -aes-256-cbc -salt -in file -out file.enc -pass pass:123456
更安全方式(使用环境变量):
export PASS="mypassword"
openssl enc -aes-256-cbc -salt -in file -out file.enc -pass env:PASS
openssl enc -aes-256-cbc -salt -a -in file -out file.enc
openssl enc -aes-256-cbc -d -a -in file.enc -out file.dec
✅ -a 表示 base64 编码(适合邮件、文本传输)
openssl enc -aes-256-cbc \
-K $(echo -n "password" | openssl dgst -sha256 | cut -d' ' -f2) \
-iv 00000000000000000000000000000000 \
-in file -out file.enc
⚠️ 一般不推荐手动指定 IV,除非你非常清楚自己在做什么。
openssl enc -ciphers
常见算法:
aes-128-cbcaes-256-cbcdes3(旧,不推荐)✅ 一定要加 -salt
✅ 加密后原文件不会自动删除
✅ OpenSSL 1.1.1+ 与老版本加密文件可能不兼容
✅ 忘记密码 = 数据不可恢复
| 工具 | 说明 |
|---|---|
gpg -c |
更标准、更适合文件加密 |
age |
现代、简单、安全 |
openssl smime |
非对称加密(证书) |
# 加密
openssl enc -aes-256-cbc -salt -in secret.txt -out secret.txt.enc
# 解密
openssl enc -aes-256-cbc -d -in secret.txt.enc -out secret.txt
如果你愿意,我可以帮你:
✅ 写一个 加密/解密脚本
✅ 对比 OpenSSL vs GPG
✅ 说明 OpenSSL 与 chunk 加密区别
✅ 解释 AES、CBC、salt 是什么