我有一个用python编写的程序,我需要存储一些密码。这些密码将成为ftp服务器的密码,因此重要的是它们并不是每个人都能清楚地看到的。这也意味着我不能像在网络服务器上那样存储密码的不可逆散列,因为我不会检查是否有人输入了正确的密码,我只是将密码转发给其他人。 /> 那么存储密码的最佳方法是什么?我正在使用python,程序将只支持linux。
答案 0 :(得分:5)
您可以使用系统的密钥环,例如GNOME钥匙圈或KDE钱包。
有一个名为keyring的Python模块支持多个密钥环提供程序。我只在Windows上试过它,但它还没有正常工作。似乎开发不是很活跃,但你应该试一试。您也可以尝试使用特定于GNOME和更低级别的“python-gnomekeyring”包。
答案 1 :(得分:2)
根据分布情况,您可以将其存储在钥匙串中(如果有的话)。
否则,请查看一些可用的加密算法(PGP / GPG,DES,AES等)及其Python端口/模块,但这是您 要做的正确的事情。< / p>
答案 2 :(得分:2)
有一种方便且不安全的方式:只需将它们存储为纯文本,如果您真正使用FTP(而不是,例如SFTP),那么它们将与托管它们的机器一样安全(这意味着它不是非常安全)。 FTP是在通过线路发送明文密码被认为“足够安全”的时候编写的;那些日子已经一去不复返了。即使在python源代码中对明文密码进行编码也无法帮助您,因为在某些时候您必须对它们进行解码。
安全方法需要更多设置。这是一个decent tutorial,我希望有更好的。
答案 3 :(得分:0)
在Linux上查看netrc(使用man或this),然后查看this Python module
如果netrc有适当的信息,您可以在命令行使用ftp而无需输入用户名和密码 - 它们会在文件中查找。需要注意的一些事项:文件仅限于用户读/写(0600),否则可能被ftp拒绝。如果可行,那么您就可以从Python中使用它了。
更好的想法是完全避免使用ftp(密码以纯文本形式发送)并使用sftp。将公钥从运行Python脚本的计算机复制到每台目标计算机,让ssh以安全的方式自动登录。
答案 4 :(得分:-4)
我建议哈希密码哈希是单向函数,因此无法找回密码的纯文本版本(与加密不同)。 MD5是我喜欢的算法,已经在python中实现了。您可以随时向哈希添加salt,例如abdPasswordABDA
,其中Password是密码。然后将哈希值存储在文件或数据库中,然后在检查之前再次对其进行哈希处理。 SHA1是您可以使用的另一种哈希算法
迪恩