我的python脚本(Python 2.6,在Debian Linux上)要求用户输入密码,然后将其保存在用户主目录中.
因为我不想将密码作为纯文本保护,我想以某种方式加密它.所以我想也许我可以使用用户的(私有)ssh-key来加密和解密保存在文件中的密码,这样只有一个访问私有ssh密钥的人才能解密保存的密码.
为此使用私有ssh密钥是个好主意吗?如何在python中使用密钥加密字符串?
(顺便说一句,我不想使用密钥环和类似的东西)
编辑
好吧,我理解使用用户ssh密钥这样的东西是个坏主意.相反,我现在只使用base64编码,如下所述: 如何使用Python对字符串进行编码和解码以在URL中使用? 当有人读我的python脚本时,当然不能保存.但它对我来说足够了,不必将密码保存为纯文本.
绝对值得做的唯一事情是存储只有用户可以阅读的文件.
您使用ssh键的参数似乎如下所示:
我需要存储密码,所以我会加密它
如果我使用用户的ssh密钥进行加密,这将阻止有人解密密码,即使他们拥有我的脚本源,因为只有用户可以读取他们的ssh密钥.
如果将加密密码存储在文件中,只有用户可以读取,您将获得与使用ssh密钥相同的好处,而无需费心阅读用户的ssh密钥.
我同意不以纯文本形式存储密码以防止有人登录时有一些好处root
:
cat secret-password
获取密码但记住在Python脚本中找到行说法很容易:
password = decrypt-password(data)
并添加以下行:
print "The user's password is",password
类似于os.fchown()
保护文件的技巧,就像创建具有正确权限的文件一样.
您可以base64
对密码进行编码,使其不是纯文本,但如果我们假设攻击者可以读取和编辑您的脚本,则唯一可以保护用户的是攻击者无法读取包含加密密码的文件.
如果您真的担心这一点,只需在每次运行脚本时提示用户输入密码.