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

3 投票
2 回答
678 浏览
提问于 2025-04-29 07:47

我知道最好的做法是对用户的密码进行加密,而我在其他网站应用中都是这么做的,但这次的情况有点不同。

我正在开发一个应用,它会给公司的员工发送邮件通知。邮件将通过公司的SMTP服务器发送,所以他们需要给这个应用提供一个专门用于此目的的邮箱账号的邮件和密码。

安全性对我来说很重要,我不想存储可以被解密的密码,但似乎没有其他办法可以做到这一点。如果这有帮助的话,这个应用是一个多租户的网络应用。

在Python中,怎样才能安全地加密这些密码呢?因为如果只是简单地加密,无法用来和邮件服务器进行身份验证。

谢谢!

注意:邮件服务器和这个网络应用不在同一个网络上。

暂无标签

2 个回答

0

我强烈推荐使用BCrypt。这个算法有很多优点,而且大多数实现都能帮你解决这些问题。

正如在这个回答中所描述的:

BCrypt在密码学算法中享有很好的声誉:它已经存在了一段时间,使用得也很广泛,"引起了关注",而且到现在为止仍然没有被破解。

我写了一篇详细的文章,讲解如何在Python和其他框架中实现BCrypt,链接在这里:http://davismj.me/blog/bcrypt

2

我之前也遇到过这个问题。我觉得最终,如果你在应用里只能生成一个明文密码,那么所有生成这个密码的材料都必须能被应用访问到。

我认为这里没有什么神奇的加密技术可以用。你应该依靠文件系统的权限来防止其他人访问这些数据。注意,你的SSH私钥在你的家目录里并没有被加密。它就放在你的家目录里,你依赖的是Linux系统不会让随便的人去读取它。

所以,给这个应用创建一个用户,把密码放在只有这个用户能访问的目录里。

撰写回答