当使用文本文档保存网站账户和密码时,对文本文件进行加密以保证文件不慎泄露给他人时不会暴露自己的网站账户和密码。

大多数发行版会自带有openssl,或是安装openssh时会顺带安装openssl。因此以下以openssl为例。
运行openssl help可以看到其所支持的加密、校验方式:

Message Digest commands (see the `dgst' command for more details)
blake2b512        blake2s256        gost              md4
md5               rmd160            sha1              sha224
sha256            sha3-224          sha3-256          sha3-384
sha3-512          sha384            sha512            sha512-224
sha512-256        shake128          shake256          sm3

Cipher commands (see the `enc' command for more details)
aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb
aes-256-cbc       aes-256-ecb       aria-128-cbc      aria-128-cfb
aria-128-cfb1     aria-128-cfb8     aria-128-ctr      aria-128-ecb
aria-128-ofb      aria-192-cbc      aria-192-cfb      aria-192-cfb1
aria-192-cfb8     aria-192-ctr      aria-192-ecb      aria-192-ofb
aria-256-cbc      aria-256-cfb      aria-256-cfb1     aria-256-cfb8
aria-256-ctr      aria-256-ecb      aria-256-ofb      base64
bf                bf-cbc            bf-cfb            bf-ecb
bf-ofb            camellia-128-cbc  camellia-128-ecb  camellia-192-cbc
camellia-192-ecb  camellia-256-cbc  camellia-256-ecb  cast
cast-cbc          cast5-cbc         cast5-cfb         cast5-ecb
cast5-ofb         des               des-cbc           des-cfb
des-ecb           des-ede           des-ede-cbc       des-ede-cfb
des-ede-ofb       des-ede3          des-ede3-cbc      des-ede3-cfb
des-ede3-ofb      des-ofb           des3              desx
rc2               rc2-40-cbc        rc2-64-cbc        rc2-cbc
rc2-cfb           rc2-ecb           rc2-ofb           rc4
rc4-40            seed              seed-cbc          seed-cfb
seed-ecb          seed-ofb          sm4-cbc           sm4-cfb
sm4-ctr           sm4-ecb           sm4-ofb

此处不评估各方式的性能,评估openssl算法性能的方法见测试平台在linux下的ssl性能
假设当前路径下有个password.txt文件,使用如下命令可使用aes-256-cbc对该文件进行加密,并将加密后的文件保存为password.aes:

openssl enc -aes-256-cbc -in password.txt -out password.aes

在加密前会提示要求输入加密的密码,附加-k参数可以指定该密码,例如指定密码为123456:

openssl enc -aes-256-cbc -in password.txt -out password.aes -k "123456"

需要解密时,通过增加-d参数,并将加密时的输出文件作为解密时的输入文件即可:

openssl enc -aes-256-cbc -in password.aes -out password.out -k "123456" -d

之后加密后的内容会解密在password.out。
平常保存加密后的文件,需要时将文件解密,并及时删除明文文件,可提高密码文件保存的安全性。

附:一个使用输出重定向(Linux输出重定向的若干应用)将文件加密并转换为base64的例子。
此处明文为"test",密码为使用文本"123"计算的md5sum。

$ echo "test" | openssl enc -aes-256-cbc -k $(echo "123" | md5sum) | base64
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
U2FsdGVkX1+g5gOpEvcDtnTu08HhK3NkRNX115LWPfQ=

将所得到的base64先解码在通过openssl解密即可得到明文:

$ echo "U2FsdGVkX1+g5gOpEvcDtnTu08HhK3NkRNX115LWPfQ=" | base64 -d | openssl enc -aes-256-cbc -d -k $(echo "123" | md5sum)
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
test

标签: Linux

添加新评论