Пользовательский провайдер asp.net подтвердит пароль
Я реализую пользовательский поставщик членства в веб-приложении asp.net, подключенном к базе данных mysql. Я использовал конфигурацию ASP.NET для настройки пользователей. В файле web.config я установил для hashAlgorithmType значение "HMACSHA512". Когда я смотрю в таблицу my_aspnet_membership в mysql, есть две колонки: "Пароль" и "Пароль".
Для входа в систему я знаю, что мне нужно хешировать предоставленный пароль и проверить, является ли он таким же, как в БД.
Я создал пользователя с паролем "test123", в базе данных хэшированный пароль: "a590AyAnPrdm2CZO+HyGdr9VE6sg1jPXYj7Fdt2NCoCnb2pEKRXd7HD/sr3rL7AwNUK8UHoz6Sjd = nh0".hh0hs0
Когда я пытаюсь подтвердить правильный пароль с помощью данного ключа, он терпит неудачу, и я не знаю почему.
Есть кто-нибудь, кто может мне помочь?
Код:
private bool CheckPassword(string password, string dbpassword)
{
string pass1 = password;
string pass2 = dbpassword;
switch (config.getMembershipData().PasswordFormat)
{
case MembershipPasswordFormat.Encrypted:
pass2 = UnEncodePassword(dbpassword);
break;
case MembershipPasswordFormat.Hashed:
pass1 = EncodePassword(password);
break;
default:
break;
}
if (pass1 == pass2)
{
return true;
}
return false;
}
// EncodePassword
private string EncodePassword(string password)
{
string encodedPassword = password;
switch (config.getMembershipData().PasswordFormat)
{
case MembershipPasswordFormat.Clear:
break;
case MembershipPasswordFormat.Encrypted:
encodedPassword = Convert.ToBase64String(EncryptPassword(Encoding.Unicode.GetBytes(password)));
break;
case MembershipPasswordFormat.Hashed:
HMACSHA512 hash = new HMACSHA512();
hash.Key = **PasswordKey**;
encodedPassword = Convert.ToBase64String(hash.ComputeHash(Encoding.Unicode.GetBytes(password)));
break;
default:
throw new ProviderException("Unsupported password format.");
}
return encodedPassword;
}