用Python存储密码
我正在用Python写一个程序,需要存储一些密码。这些密码是用来访问ftp服务器的,所以不能让所有人都能轻易看到。这也意味着我不能像在网页服务器上那样存储不可逆的密码哈希,因为我不是在检查用户输入的密码是否正确,而是直接把密码转发给其他人。
那么,存储密码的最佳方法是什么呢?我使用的是Python,而且这个程序只在Linux上运行。
5 个回答
2
有一种方便但不安全的方法:就是把密码直接以明文形式存储。如果你真的在用FTP(而不是像SFTP这样的安全传输方式),那么这些密码的安全性就和你存放它们的机器一样(也就是说,实际上并不安全)。FTP是在一个认为明文密码传输是“足够安全”的时代开发的;那种时代已经过去了。即使你在Python代码中对明文密码进行了编码,也并没有太大帮助,因为最终你还是得把它解码。
安全的方法需要稍微多一点的设置。这里有一个不错的教程,我相信还有更好的教程。
2
根据你使用的系统版本,如果有钥匙串的话,你可以把它存储在里面。
如果没有的话,可以看看一些加密算法,比如PGP/GPG、DES、AES等等,还有它们在Python中的实现模块。不过这些东西比较复杂,你必须要弄对。
6
你可以使用系统的密码管理工具,比如GNOME钥匙串或者KDE钱包。
有一个叫做keyring的Python模块,它支持多种密码管理工具。我只在Windows上试过这个模块,但在那里的表现还不太好。看起来这个项目的开发进展不是很活跃,不过你可以试试看。你也可以尝试一个叫“python-gnomekeyring”的包,它是专门为GNOME设计的,功能更底层。