我在以下网址中引用了以下网站的 Rijndael 和 Asp.net 哈希实现。
- Rijndael - How to generate Rijndael KEY and IV using a passphrase?
- Asp.net 哈希 - ASP.NET Identity default Password Hasher, how does it work and is it secure?
在这两个实现中, 以下用于获取密码的随机字节。 RijnDael
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(password, SALT);
Asp.net 身份哈希
Rfc2898DeriveBytes bytes = new Rfc2898DeriveBytes(providedPassword, salt, HasingIterationsCount)
在上述代码之后,RijnDael 对返回的字节进行加密。 但是 asp.net 身份复制结果,因为它与盐字节数组一样,并返回散列键。
这里我有一个困惑。 RijnDael 和 Asp.net 身份哈希使用相同的 Rfc2898DeriveBytes。
当 RijnDael 可以解密加密 key (这是在 Rfc2898DeriveBytes 的帮助下完成)时,为什么我们可以解密 Asp.net Identity 哈希 key ?
有可能这样做吗? Asp.net 身份安全吗?
最佳答案
是的,ASP.NET 的密码哈希方法是安全的。
在您提供的示例中,用户正在使用一种称为“高级加密标准”(AES,也称为 Rijndael)的加密技术。这就是 secret 可以被解密的原因。
用户仅使用 Rfc2898DeriveBytes
类即可获取 key和一个initialisation vector .
该类不用于散列 secret 消息。加密是隐藏消息的方法。
ASP.NET 使用 Rfc2898DeriveBytes
类对密码进行哈希处理。此过程无法逆转。
关于c# - Asp.net 身份哈希安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40012839/