【发布时间】:2017-03-30 05:18:12
【问题描述】:
我正在使用 ASP.NET 4.5 MVC 和实体框架提供的默认身份信息。我可以使用密码创建用户,并且散列密码显示在数据库中。我试图弄清楚该哈希是使用不再受信任的 SHA1 算法还是 SHA2 算法(无论是 SHA256、SHA512 等)生成的。
似乎说它默认为 SHA256 的文章:
https://www.asp.net/whitepapers/aspnet4/breaking-changes#0.1__Toc256770148
似乎说它默认为 SHA1 的文章:
https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing
https://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx
当我沿着链向下走时,我最终进入 PasswordHasher.cs 类 -> HashPassword() -> Crypto.HashPassword() ,我可以看到它使用的是 Rfc2898DeriveBytes ,其中包含一堆关于 HMACSHA1 的内容。
那么我的密码是被 SHA256 还是 SHA1 散列了?默认为 SHA256 的简单方法?
如果有帮助,这是从我的本地环境中获取的虚拟密码: AIPfkvy5v59jmVZdPpU9QfUMoToCQ+Rp3dBT7m9RwMKZai5/61REkN/0InCtxKPUOQ==
【问题讨论】:
-
Comments 在源代码中表示版本 2 中的 SHA1 和版本 3 中的 SHA256
-
@Thangadurai 和版本 3 仅在 ASP.NET Core 中可用,在 ASP.NET 4.5 中不可用,对吧?
-
从 .NET 4.0 开始,默认哈希算法似乎已更改为 SHA256。我找不到任何有关此更改的官方文档。
-
@Thangadurai 你的依据是什么?我收录的文章?代码看起来仍然使用 SHA1
标签: asp.net asp.net-mvc password-protection sha