我正在创建一个自定义存储,以使用OWIN和ASP.NET Identity登录到我的MVC5站点。
我在我的自定义用户中存储了一个基数为64的密码和基数为64的盐的字段。为了加密密码,我将盐附加到纯文本密码上。
我创建了此密码哈希器:
public class PasswordHasher : IPasswordHasher
{
public string HashPassword(string password)
{
using (SHA1 sha1 = SHA1.Create())
{
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(password);
byte[] hashBytes = sha1.ComputeHash(inputBytes);
// Convert the byte array to hexadecimal string
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("X2"));
}
return sb.ToString();
}
}
public PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string providedPassword)
{
if (hashedPassword == HashPassword(providedPassword))
return PasswordVerificationResult.Success;
else
return PasswordVerificationResult.Failed;
}
}
这个问题是我没有IdentityUser来连接盐字段。
我不想添加Microsoft.AspNetCore.Identity参考。我知道该库具有接收用户对象的密码哈希器,因此我可以做我想做的事情。但是在这种情况下,我没有用户对象。有办法吗?
谢谢 海梅