如何保护存储在数据库中的敏感密码

时间:2010-02-22 12:28:10

标签: database passwords encryption

我正在开发一个最终用户必须创建帐户的Web应用程序。这部分非常简单:我将使用SHA-256对密码进行哈希处理,以便除了用户自己以外没有人知道密码。现在来了困难的部分。用户创建帐户后,他/她必须提供他/她的电子邮件服务器的密码。现在的问题是:我如何正确地保护这个密码(密码将存储在数据库中)?如果我使用TripleDES加密密码,任何开发人员或系统管理员都可以解密密码并查看密码。处理这种问题的常用方法是什么?非常感谢。

1 个答案:

答案 0 :(得分:10)

通常的方法是使用从用户密码派生的对称加密密钥。执行此操作的标准方法是使用RFC2898中指定的算法,该算法生成一组可用作密钥和IV的加密安全字节。它可能是由您的语言库支持的,例如.NET,我使用的是Rfc2898DeriveBytes类。

当然,当您的用户更改密码时,您必须解密任何现有的密文,然后派生新密钥并重新加密。