Преобразовать хэшированные значения из базы данных в читаемую строку - PullRequest
0 голосов
/ 03 июня 2019

Я работаю над небольшим проектом, чтобы познакомиться с C # / .NET. Я пытаюсь аутентифицировать пользователя, который находится в таблице Users на локальном сервере SQL через форму. Пароли хешируются (не засолены - только тестирование). Моя проблема в том, что я не уверен, как преобразовать хешированное значение пароля (SHA512), которое находится в базе данных, в строку. Должен ли я использовать другой подход к этому?

Из того, что я читаю, я думаю, что должен использовать метод Convert.ToBase64String, но я не уверен, как бы я подошел к нему или я на правильном пути. Вот что у меня есть.

        SqlConnection con = new SqlConnection(@"Data Source=myLocalSQLServer;Initial Catalog=libtest;Integrated Security=True");
        SqlDataAdapter sqa = new SqlDataAdapter("Select count(*) from Users where UserName = '"+ UserName.Text +"' and Password = '"+ Password.Text +"'",con);
        DataTable dt = new DataTable();
        sqa.Fill(dt);


        if(dt.Rows[0][0].ToString() == "1")
        {
            MessageBox.Show("Login Successful!");

        }
        else
        {
            MessageBox.Show("Username or Password is incorrect");
        }

Хешированные пароли не могут аутентифицироваться. Я хотел бы иметь возможность аутентифицировать хешированные пароли и проверять пользователей для подключения к следующей форме.

1 Ответ

0 голосов
/ 03 июня 2019

Ваш пароль уже хэширован в базе данных, поэтому вы должны сравнить хеш-значение, хранящееся в базе данных, и хеш-значение, введенное пользователем. Посмотрите на пример ниже.

    static void Main(string[] args)
    {
        SHA512Cng sha = new SHA512Cng();
        var hash = sha.ComputeHash(Encoding.UTF8.GetBytes(Password_field.Password));
        var hexSignature = ToHexString(hash);
    }

    public static string ToHexString(byte[] array)
    {
        return string.Concat(Array.ConvertAll(array, b => b.ToString("x2")));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...