我的 python 脚本(Python 2.6,在 Debian Linux 上)要求用户输入密码,然后将其保存在用户主目录中。
因为我不想将密码保存为纯文本,所以我想以某种方式对其进行加密。所以我想也许我可以使用用户的(私有(private))ssh key 来加密和解密保存在文件中的密码,这样只有有权访问私有(private) ssh key 的人才能解密保存的密码。
为此使用私有(private) ssh key 是个好主意吗?我如何使用 key 在 python 中加密字符串?
(顺便说一句,我不想使用 key 圈之类的东西)
编辑
好吧,我知道将用户 ssh key 用于类似的事情是个坏主意。 相反,我现在只使用 base64 编码,如下所述: How does one encode and decode a string with Python for use in a URL? 当然它不会保存,当有人阅读我的 python 脚本时。但这对我来说已经足够了,不必将密码保存为纯文本。
最佳答案
唯一值得做的就是存储只有用户才能读取的文件。
您关于使用 ssh key 的论点似乎类似于以下内容:
- 我需要存储密码,所以我会对其进行加密
- 如果我使用用户的 ssh key 进行加密,这将防止有人解密密码,即使他们知道我的脚本源也是如此,因为只有用户才能读取他们的 ssh key 。
如果您将加密的密码存储在一个只有用户可以读取的文件中,您可以获得与使用 ssh key 相同的好处,而根本不必费心读取用户的 ssh key 。
我同意不以明文形式存储密码有一些好处,以防止有人以 root
身份登录只是在做:
cat secret-password
获取密码,但请记住,很容易在您的 Python 脚本中找到以下行:
password = decrypt-password(data)
并添加以下行:
print "The user's password is",password
类似于 os.fchown()
可以保护文件,就像首先创建具有正确权限的文件一样。
你可以 base64
encode密码,因此它不是纯文本,但如果我们假设攻击者可以读取和编辑您的脚本,那么唯一可以保护用户的是攻击者无法读取包含加密密码的文件。
如果您真的担心这一点,只需在用户每次运行脚本时提示用户输入密码即可。
关于python - 使用 ssh key 加密和解密密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4165042/