我知道最好的做法是哈希用户密码,我会为所有其他网络应用程序执行此操作,但这种情况有点不同。
我正在构建一个向公司员工发送电子邮件通知的应用。 电子邮件将从公司的SMTP服务器发送,因此他们需要为他们为此目的分配的电子邮件帐户提供应用程序电子邮件/密码凭据。
安全性对我来说很重要,我宁愿不存储我们可以解密的密码,但似乎没有其他方法可以做到这一点。 如果它有所不同,这是一个多租户网络应用程序。
python加密这些密码的最佳方法是什么,因为对它们进行散列会对我们在尝试使用邮件服务器进行身份验证方面没有好处?
谢谢!
注意:邮件服务器与网络应用程序不在同一网络上
答案 0 :(得分:2)
我之前也遇到过这个问题。我认为最终,如果您无法在应用程序内部生成纯文本密码,那么应用程序可以访问生成密码的所有工件。
我不认为这里有一些加密魔法。依靠文件系统权限来防止任何人首先访问数据。请注意,您的SSH私钥未在您的主目录中加密。它就在你的家庭目录中,你指望Linux不会让任何人阅读它。
因此,请为此应用程序创建一个用户,并将密码放在只有该用户可以访问的目录中。
答案 1 :(得分:0)
我强烈建议使用 BCrypt 。算法有很多优点,大多数实现都会为您处理所有这些问题。
如this answer中所述:
Bcrypt拥有加密算法可以实现的最佳声誉:它已经存在了相当长的一段时间,使用相当广泛,并引起了人们的注意,并且迄今为止仍然没有中断。 / p>
我已经写了一篇关于如何在python和其他框架中实现BCrypt的详细文章:http://davismj.me/blog/bcrypt