温馨提示×

OpenSSL在Linux如何加密文件

小樊
44
2026-08-13 21:29:11
栏目: 云计算

在 Linux 下使用 OpenSSL 加密/解密文件,常见做法如下(以 AES-256-CBC 为例,这是最常用、兼容性最好的方式)。


一、使用 OpenSSL 加密文件(对称加密)

1️⃣ 加密文件

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:加密后的文件

2️⃣ 解密文件

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

三、使用 Base64(便于传输)

加密并 Base64 编码

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 编码(适合邮件、文本传输)


四、使用 SHA256 作为密钥(高级用法)

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-cbc
  • aes-256-cbc
  • des3(旧,不推荐)

六、注意事项(非常重要)

一定要加 -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 是什么

0