openssl: 加密/解密一个txt文档
openssl 对一个 test.txt 加解密,帮我用shell命令实现?
几个概念
- 初始向量IV:
abcdef0123456789abcdef0123456789
- 密钥Key(K):
0123456789abcdefabcdef0123456789123456789abcdefabcdef01234567891
# 注意长度:
>>> len('abcdef0123456789abcdef0123456789') # 32
>>> len('0123456789abcdefabcdef0123456789123456789abcdefabcdef01234567891') # 64
准备 test.txt
用这个命令一键生成:
echo "hello aric" > test.txt
hello aric
加密
openssl enc -aes-256-cbc -salt -in test.txt -out test.txt.enc -K 0123456789abcdefabcdef0123456789123456789abcdefabcdef01234567891 -iv abcdef0123456789abcdef0123456789
解密
openssl enc -aes-256-cbc -d -in test.txt.enc -out test.txt.dec -K 0123456789abcdefabcdef0123456789123456789abcdefabcdef01234567891 -iv abcdef0123456789abcdef0123456789
最终
~/Downloads via 🐠 v20.11.1 via 🐍 v3.10.0
$ cat test.txt.dec
hello aric
cheatsheet
当然,这是你需要的信息:
| 加密类型 | 密钥长度(字符) | 密钥长度(字节) | 初始化向量长度(字符) | 初始化向量长度(字节) |
|------------|--------------|--------------|---------------------|-------------------|
| AES-128-CBC | 32 | 16 | 32 | 16 |
| AES-256-CBC | 64 | 32 | 32 | 16 |
**备注:**
- "字符"指的是使用十六进制表示的字符数量,对于"字节",每个字节对应2个字符。
- 加密密钥和初始化向量都需要以十六进制字符串的形式提供,因此长度为 N 字节的密钥或 IV 将为 2N 个字符。
加密类型 | 密钥长度(字符) | 密钥长度(字节) | 初始化向量长度(字符) | 初始化向量长度(字节) |
---|---|---|---|---|
AES-128-CBC | 32 | 16 | 32 | 16 |
AES-256-CBC | 64 | 32 | 32 | 16 |