所以我需要能够实际解密密码,因为一些旧网站不使用OAuth,我需要让一些用户通过API访问它们。因此,一种方式散列对我不起作用。我被告知使用AES存储密码并使用密码的盐渍哈希作为密钥的最佳方法。如何存储所有密钥以及在哪里存储盐?基本上我将如何实现这一点。
谢谢
答案 0 :(得分:1)
如果我理解正确,您会遇到以下情况。用户使用用户名和密码登录系统。然后,您的系统需要通过登录到您无法使用用户的用户名和密码控制的另一个系统来模拟这些用户。
如果这是正确的,那么使用AES加密其他网站的凭据可能是合理的。在这种情况下,我不会存储用于加密这些凭证的密钥。用户用来访问系统的密码应该用作密钥,不应该存储在任何地方。通过这种方式,您可以保护用户的隐私(当然,取决于系统其他部分的设计)。
由于您正在加密而不是散列,并且加密密钥对于每个用户而言都是不同的,因此不需要进行腌制。
另外,我会加密完整的凭据,而不仅仅是密码。您的用户首先会向您提供他们的凭据,从而表现出令人难以置信的信任,所以我会尽一切可能证明这种信任!
答案 1 :(得分:0)
您的方法基本上是使用AES作为哈希函数,但这不允许您解密密码(没有蛮力或一些尚未发现的漏洞)。
您可能希望考虑使用非对称密钥加密(例如RSA)。您需要使用您希望解密它的每个人的公钥来加密密码(包括用户)。