如何在 .net 核心中散列密码,使其在 .net 框架中相等
How to hash password in .net core that equal in .net framework
我目前正在将使用 .Net Framework 4.5.2 的旧 API 迁移到 .Net Core 2.1,在使用 .Net Framework 4.5.2 的旧 API 中有这个脚本:
PasswordHasher hasher = new PasswordHasher();
password = ConfigurationManager.AppSettings["userDefaultPassword"].ToString();
hashedPassword = hasher.HashPassword(password);
所以我想知道,我可以在 .Net Core 2.1 中使用产生与旧 .Net Framework 中相同的散列结果的相同函数吗?
我相信等价物是这样的:
IConfiguration _configuration;
PasswordHasher<User> hasher = new PasswordHasher<User>(
new OptionsWrapper<PasswordHasherOptions>(
new PasswordHasherOptions() {
CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV2
})
);
password = _configuration["userDefaultPassword"].ToString();
hashedPassword = hasher.HashPassword(user, password);
备注:
- 您现在应该使用
IConfiguration
(Startup.cs 中的 Configuration
)而不是 ConfigurationManager
。
- PasswordHasher 现在将您的用户对象作为通用参数(以及调用 HashPassword 时的实例)。
- 我已经为
IdentityV2
指定了 CompatibilityMode,因为听起来您想生成向后兼容的密码散列(即,您可以从 .NET Framework 访问数据库并了解 .NET Core 生成的散列) .如果不是这种情况,您可以删除它,因为验证码可以在不设置它的情况下验证旧的哈希值。
OptionsWrapper
在 Microsoft.Extensions.Options
命名空间下。
我目前正在将使用 .Net Framework 4.5.2 的旧 API 迁移到 .Net Core 2.1,在使用 .Net Framework 4.5.2 的旧 API 中有这个脚本:
PasswordHasher hasher = new PasswordHasher();
password = ConfigurationManager.AppSettings["userDefaultPassword"].ToString();
hashedPassword = hasher.HashPassword(password);
所以我想知道,我可以在 .Net Core 2.1 中使用产生与旧 .Net Framework 中相同的散列结果的相同函数吗?
我相信等价物是这样的:
IConfiguration _configuration;
PasswordHasher<User> hasher = new PasswordHasher<User>(
new OptionsWrapper<PasswordHasherOptions>(
new PasswordHasherOptions() {
CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV2
})
);
password = _configuration["userDefaultPassword"].ToString();
hashedPassword = hasher.HashPassword(user, password);
备注:
- 您现在应该使用
IConfiguration
(Startup.cs 中的Configuration
)而不是ConfigurationManager
。 - PasswordHasher 现在将您的用户对象作为通用参数(以及调用 HashPassword 时的实例)。
- 我已经为
IdentityV2
指定了 CompatibilityMode,因为听起来您想生成向后兼容的密码散列(即,您可以从 .NET Framework 访问数据库并了解 .NET Core 生成的散列) .如果不是这种情况,您可以删除它,因为验证码可以在不设置它的情况下验证旧的哈希值。 OptionsWrapper
在Microsoft.Extensions.Options
命名空间下。