Пользовательский провайдер 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;
    }

0 ответов

Другие вопросы по тегам