【问题标题】:Using AES to store passwords使用 AES 存储密码
【发布时间】:2011-02-18 19:27:36
【问题描述】:

所以我需要能够真正解密密码,因为一些旧网站不使用 OAuth,我需要让我的一些用户可以通过那里的 API 访问它们。因此,一种散列方式对我不起作用。有人告诉我,使用 AES 存储密码并使用密码的加盐哈希作为密钥的最佳方法。如何存储所有密钥以及将盐存储在哪里?基本上我将如何实现这一点。

谢谢

【问题讨论】:

  • 你的问题没有多大意义。您使用谁的凭据(登录名/密码)访问这些“旧网站”?也就是说,是否每个您的 用户在这些第三方网站上都有自己的帐户,还是您让他们共享您的 帐户?您的用户是否使用密码登录您的网站?

标签: security passwords aes storage


【解决方案1】:

如果我理解正确,您有以下情况。用户使用用户名和密码登录您的系统。然后,您的系统需要通过使用用户提供给您的系统的用户名和密码登录到您无法控制的另一个系统来模拟这些用户。

如果这是正确的,那么使用 AES 加密其他网站的凭据可能是合理的。在这种情况下,我不会存储用于加密这些凭证的密钥。用户用于访问您的系统的密码应用作密钥,并且不应存储在任何地方。这样,您就有机会保护您的用户隐私(当然,这取决于系统其余部分的设计)。

由于您是加密而不是散列,并且每个用户的加密密钥都不同,因此不需要加盐。

另外,我会加密完整的凭据,而不仅仅是密码。您的用户一开始就向您提供他们的凭据,从而表现出令人难以置信的信任,因此我会尽一切可能证明这种信任的合理性!

【讨论】:

    【解决方案2】:

    您的方法本质上是使用 AES 作为哈希函数,但这不允许您解密密码(缺乏暴力破解或一些尚未发现的漏洞)。

    您可能需要考虑非对称密钥加密(例如 RSA)。您需要使用您希望需要解密的每个人(包括用户)的公钥来加密密码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 2023-03-19
      • 2010-12-29
      • 2011-10-14
      相关资源
      最近更新 更多