@savva09
Начинающий .NET-ер

Возникли проблемки с авторизацией сайта, нет доступа. Как исправить?

Возникли проблемы с проверкой хешированных паролей. Когда я использую просто онлайн компилятор и в одной сессии и хеширую, и проверяю пароль, все ок. Но как только я пытаюсь проверить пароль записанный в бд ранее, возвращает false, хотя я скопировал пароль из бд

Hasher с двумя методами:
VerifyHashedPassword
public static bool VerifyHashedPassword(string? hashedPassword, string password)
    {
        byte[] buffer4;
        if (hashedPassword == null)
        {
            return false;
        }
        if (password == null)
        {
            throw new ArgumentNullException("password");
        }
        byte[] src = Convert.FromBase64String(hashedPassword);
        if ((src.Length != 0x31) || (src[0] != 0))
        {
            return false;
        }
        byte[] dst = new byte[0x10];
        Buffer.BlockCopy(src, 1, dst, 0, 0x10);
        byte[] buffer3 = new byte[0x20];
        Buffer.BlockCopy(src, 0x11, buffer3, 0, 0x20);
        using (var bytes = new Rfc2898DeriveBytes(password, dst, 0x3e8, HashAlgorithmName.SHA512))
        {
            buffer4 = bytes.GetBytes(0x20);
        }
        
        return buffer3.SequenceEqual(buffer4);
    }

HashPassword
public static string HashPassword(string password)
    {
        byte[] salt;
        byte[] buffer2;
        if (password == null)
        {
            throw new ArgumentNullException(nameof(password));
        }
        using (Rfc2898DeriveBytes bytes = new Rfc2898DeriveBytes(password, 16, 1000, HashAlgorithmName.SHA512))
        {
            salt = bytes.Salt;
            buffer2 = bytes.GetBytes(0x20);
        }
        byte[] dst = new byte[0x31];
        Buffer.BlockCopy(salt, 0, dst, 1, 0x10);
        Buffer.BlockCopy(buffer2, 0, dst, 0x11, 0x20);
        return Convert.ToBase64String(dst);
    }


Оба просто скопированы из интернета и проверены в онлайн компиляторе, вроде оно должно работать, но нет...
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 1
@unlor
7 лет в SEO, а теперь - здравствуй, PHP
В бд же не просто пароль хешируется наверно, а пароль с солью? Конечно, его хеш не совпадет с чистым паролем)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы