我已将密码以纯文本形式存储在 txt 文件中。现在我想编写脚本,从 txt 文件中读取纯文本,然后对其进行加密和解密。
答案1
当您无法保持密码加密时,对其进行加密是没有用的。一旦你解密它,它就会再次受到攻击。
无论加密和解密方法有多困难,任何人都可以查看和复制粘贴。这只会让事情变得更愚蠢。
chmod
与鲁布·戈德堡机器相比,它可以更好地防御窥探,但通过一些工作,您可能可以完全避免使用存储的密码,这将是一件非常好的事情。因为:可检索存储的密码是安全问题,应避免使用。它们是一个糟糕的主意sudo
,su
不仅要避免它们,它们都是专门为阻止您使用它们而设计的ssh
。scp
sftp
如果您打算让它提示您输入密码,该密码的用途有限,但我会考虑操作自动化或其他东西的可能性,您可以使用像openssl
.
$ echo foobar | openssl enc -aes-128-cbc -a -salt -pass pass:asdffdsa
U2FsdGVkX1/lXSnI4Uplc6DwDPPUQ/WjHULJoKypTO8=
$ echo U2FsdGVkX1/lXSnI4Uplc6DwDPPUQ/WjHULJoKypTO8= | openssl enc -aes-128-cbc -a -d -salt -pass pass:asdffdsa
foobar
或者你可以这样做,
$ touch pass.txt && echo foobar > pass.txt
$ openssl bf -a -salt -in pass.txt -out secret && rm -f pass.txt
enter bf-cbc encryption password:
Verifying - enter bf-cbc encryption password:
$ openssl bf -d -a -in secret -out pass.txt
enter bf-cbc decryption password:
$ cat pass.txt
foobar
答案2
听起来你可能想重新发明轮子。我个人的建议是创建一个文本文件,其中包含您想要的密码,并以美观的方式排列(每行都有唯一的用户名、密码和所属站点?)。
gpg --full-gen-key
使用选择“RSA 和 RSA”生成 4096 位 RSA 密钥。或者,天哪,2048 位在技术上仍然可以安全使用。只是不要低于 2048 位。
gpg -e passwords.txt
使用其中的密码加密文件。
输入收件人的姓名(即您)。然后一旦完成,验证它password.txt.gpg
是否存在。然后删除原始(未加密)passwords.txt。
现在是简单的部分。
当您需要文件中的密码之一时,请运行
gpg -d passwords.txt.gpg
您只需记住生成 RSA 密钥时选择的一个密码,未加密的内容将转储到 stdout(您正在使用的终端)。轻松挤柠檬豌豆。
RSA 的替代方法是使用以下密钥生成方法:
gpg --full-gen-key --expert
然后选择选项9——“ECC和ECC”。对于算法,选择 Brainpool P-512。密钥生成速度比 RSA 快得多,而且密钥尺寸更小,同样安全。确实是个人喜好。我的回复的其余部分(密码文件的加密/解密)仍然适用。
或者,您可以去超级骗子简单的路线,只需使用像 KeePassX 这样的预制软件来加密存储密码。