用OpenSSL加密/解密文件

发布于 2021-05-10  808 次阅读


1.密码方式(1.zip 为原始文件,2.zip 为经过处理之后的文件)

# openssl enc -e(-d) -aes-256-cbc -in 1.zip -out 2.zip -pbkdf2 (-a) -pass file:password.txt -p

enc:对称加密/解密
-e:加密(默认)
-d:解密
-aes-256-cbc:使用 aes-256-cbc 算法进行加密/解密(通过openssl enc -help命令可以列出所有受支持的加密算法)
-in:源文件
-out:经过处理的输出文件
-pbkdf2:使用基于密码的密钥派生函数2(可选,更安全)
-a:使用Base64编码最终输出的文件(可选,会增大最终输出文件的体积)
-pass:加密密码选项
file:从文件读取密码
password.txt:保存密码文本的文件
(也可以是-pass pass:xxx。这样就是直接输入密码xxx)
-p:输出salt、key、iv

2.密钥方式

1. 首先需要使用 openssl 生成一个 2048 位的密钥 rsa.key 文件 (rsa.key 密钥文件中包含了私钥和公钥)
# openssl genrsa -out rsa.key 2048

2. 然后从 rsa.key 密钥文件中提取出公钥 pub.key
# openssl rsa -in rsa.key -pubout -out pub.key

3. 使用 pub.key 公钥加密一个文件 (1.zip 为原始文件,2.zip 为加密之后的文件)
# openssl rsautl -encrypt -inkey pub.key -pubin -in 1.zip -out 2.zip

4. 使用 rsa.key 私钥解密一个文件 (2.zip 为加密的文件,1.zip 为解密之后的文件)
# openssl rsautl -decrypt -inkey rsa.key -in 2.zip -out 1.zip

注意:rsa 只能加密比较小的文件,过大会报错“文件过长”。


这里是可爱の桜酱喵~