2016-05-20 3 views
0

Я использовал этот http://jphellemons.nl/post/Easy-generate-SHA1-in-AspNetКак читать хешированный пароль во время входа?

хэш пароля, который был создан при регистрации, но когда я пытаюсь войти в это не позволяет мне.

Как сделать хэш прочитанным как обычный текст, который был помещен в форму до того, как он был отправлен и преобразован в хэш?

@Edit.

Хотя я могу войти с паролем хэшированном, когда я использую весь хэш text..but него не то, что я хочу D:

@ edit2

это как вещь Войти выглядит

using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Connect"].ToString())) 
    { 
     SqlCommand cmd = new SqlCommand(); 

     cmd.Connection = con; 

     cmd.CommandText = @"SELECT * FROM users 
          WHERE login = @username 
          AND pass = @password"; 

     cmd.Parameters.AddWithValue("@username", TextBox_Login.Text); 
     cmd.Parameters.AddWithValue("@password", TextBox_Password.Text); 

     con.Open(); 
     } 
+0

Являются ли пароли сохраненными или хешированными в базе данных? –

+0

@CihanYakar Это пример того, как один из паролей выглядит после хэширования D561AAD4326B6A3C50143908E22A2252336CB9B1, и он устанавливается как varchan в таблице. Но скажем, что хэшированный passowrd был «картофелем», когда я пытаюсь войти в систему, я не могу использовать картофель, но вместо этого я должен использовать хеш для входа в систему xD – Harugawa

+1

@Harugawa - см. Мой ответ. Вы берете «картофель» и хеш его при входе в систему для сравнения с сохраненным паролем. –

ответ

3

Хешинг в одну сторону. Вы не можете преобразовать его в текст, с которого вы начали (вообще говоря, конечно).

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

Если вы hash TextBox_Password.Text, а затем передаете его как параметр, а не передаете текст напрямую, вы должны получить результат, который вам нужен. Хотя вам захочется провести небольшое исследование и в конечном итоге реализовать соль на ваших хешах.

+0

Добавлен код входа, который я использую, рядом с частью, когда я создаю сеансы и прочее – Harugawa

+1

@Harugawa - вам нужно передать хешированную версию 'TextBox_Password.Text'. Таким образом, вы будете передавать хэш, равный тому, что хранится в БД. –

+0

Понятно, мне это удалось. Итак, хэш - это нечто глобальное? Причина: теперь мне удалось войти в систему с картофелем; o добавив хеширование на страницу входа – Harugawa

1

Идея хэширования состоит в том, что ее очень легко шифровать и очень сложно расшифровать. Способ входа в систему - запустить запрошенный пароль с помощью одного и того же алгоритма хэширования, а затем сравнить этот хеш с сохраненным хешем для пользователя. Вы никогда не сможете прочитать сохраненный хеш в виде обычного текста.