Python中加密密码的最安全方法是什么?

3
我知道最佳实践是要对用户密码进行哈希处理,我在我的其他web应用中也这么做了,但这种情况有点不同。
我正在开发一个应用程序,向公司员工发送电子邮件通知。 邮件将从公司的SMTP服务器发送,因此他们需要为此目的分配的电子邮件帐户提供应用程序电子邮件/密码凭据。
安全对我很重要,我宁愿不存储我们可以解密的密码,但似乎没有其他方法可以做到这一点。如果有差异,这是一个多租户web应用程序。
在Python中加密这些密码的最佳方法是什么,因为对其进行哈希处理对我们尝试验证邮件服务器没有好处?
谢谢!
注意:邮件服务器与Web应用程序不在同一网络上

2
你能否为服务设置一个单独的电子邮件账户来发送邮件? - mipadi
1
考虑使用OAuth。 - SLaks
2
如果SMTP在同一台服务器上,则可以设置为接受本地连接而无需密码。 - njzk2
1
在您的应用程序运行的服务器上运行本地 MTA(允许本地传递而无需密码),将公司的 MTA 配置为网关,并确保他们配置它以允许从您的应用程序所在的服务器中继。 - Lukas Graf
抱歉,如果我说错了,请问您能否使用hmac来完成此操作?http://pymotw.com/2/hmac/ - Totem
显示剩余4条评论
2个回答

2
我之前也遇到过这个问题。如果你无法在应用程序内生成纯文本密码,那么生成密码的所有工具都必须对该应用程序可访问。
我认为这里没有什么加密魔法。依靠文件系统权限来防止任何人首先访问数据。请注意,您的SSH私钥未在家目录中加密。它只是在您的家目录中,您可以依赖Linux不会让任何人读取它。
因此,请为此应用程序创建一个用户,并将密码放在只有该用户可以访问的目录中。

0

我强烈建议使用BCrypt。该算法有许多优点,大多数实现都可以为您处理所有这些问题。

此答案所述:

Bcrypt是一种加密算法可以获得最好的声誉:它已经存在了相当长的时间,被广泛使用,“引起了注意”,但迄今仍未被破解。

我已经撰写了一篇详细的文章,介绍如何在Python以及其他框架中实现BCrypt,文章链接在这里:http://davismj.me/blog/bcrypt


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接