我在以下网址中为Rijndael和Asp.net哈希实现引用了以下网站。
在两个实施中, 以下内容用于获取密码的随机字节。 的 Rijndael算法
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(password, SALT);
Asp.net标识哈希
Rfc2898DeriveBytes bytes = new Rfc2898DeriveBytes(providedPassword, salt, HasingIterationsCount)
在上面的代码之后,RijnDael对返回的字节应用加密。 但是asp.net标识将结果复制到salt字节数组并返回散列键。
我在这里感到很困惑。 RijnDael和Asp.net身份哈希使用相同的 Rfc2898DeriveBytes 。
当RijnDael可以解密加密密钥时(在Rfc2898DeriveBytes的帮助下完成),我们为什么要解密Asp.net Identity哈希密钥呢?
有可能这样做吗? Asp.net身份是否安全?
答案 0 :(得分:1)
是的,ASP.NET的密码哈希方法是安全的。
在您提供的示例中,用户使用的是加密技术,称为高级加密标准(AES,也称为Rijndael)。这就是秘密可以被解密的原因。
用户仅使用Rfc2898DeriveBytes
课程才能获得key和initialisation vector。
该类不用于散列秘密消息。加密是隐藏信息的。
ASP.NET使用Rfc2898DeriveBytes
类来哈希密码。这个程序是不可逆转的。