【问题标题】:Difference in hashing algorithms of .Net Identity and .Net Core Identity.Net Identity 和 .Net Core Identity 哈希算法的区别
【发布时间】:2019-05-24 11:10:44
【问题描述】:

我有两个使用 .Net Framework 和 .Net Core 的项目,它们都使用相同的数据库。

数据库包含用于登录和角色管理的用户详细信息,这分别在 .Net Identity 和 .Net Core Identity 中完成。

登录时,两个应用程序的UserManagers 都在使用输入的电子邮件获取用户,但我在一个应用程序上输入了错误的密码。

所以我想知道.Net Identity和.Net Core Identity中密码哈希算法的选择是否有区别。

【问题讨论】:

  • 我会感到惊讶,但我想这并非不可能。您使用的是什么版本的 ASP.NET 和 ASP.NET Core 以及它们的身份提供者?
  • .net 3.0 和核心 2.1
  • 它们可能不同。我认为 ASP.NET Core 至少将哈希算法更新为更现代的算法。
  • 如果有机会,我会将密码哈希器升级为使用 BCrypt 或 Argon2 的东西

标签: .net asp.net-core asp.net-identity identity asp.net-core-identity


【解决方案1】:

查看this blog post,看来默认算法确实不一样

Identity 框架中的默认实现是 PasswordHasher 类(源代码)。这个类[原文如此] 旨在使用两种不同的哈希格式:

  • ASP.NET Identity 版本 2:带有 HMAC-SHA1 的 PBKDF2、128 位盐、256 位子密钥、1000 次迭代 em>
  • ASP.NET Core Identity 版本 3:带有 HMAC-SHA256 的 PBKDF2,128 位盐,256 位子密钥,10000 次迭代

强调我的

虽然它们都使用 PBKDF2,但还是有一些细微的差别

【讨论】:

  • 所以我的两个项目不能使用一个登录表。对吗?
  • 但是那里链接的代码存储了它使用的哈希的版本号,看起来它会正确验证两者。
  • 看起来您可以覆盖要使用的版本:services.Configure<PasswordHasherOptions>(options => options.CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV2);
  • docs 解释了使用这两种格式的能力。
猜你喜欢
  • 1970-01-01
  • 2021-04-19
  • 2023-04-04
  • 1970-01-01
  • 2016-09-16
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多