2016-11-19 3 views
0

У меня есть Домашняя страница с логином с $ hash = password_hash ($ accountpassword, PASSWORD_DEFAULT) ;. (http://php.net/manual/de/function.password-hash.php)mySQl логин с C#

Пароль сохраняется, так как хэш начинается с $ 2y $.

Затем я создал вход в C#:

//crypting the PW that user enter 
     string cryptedPassword = Crypter.Blowfish.Crypt(textBox_password.Text); 


     string user = textBox_username.Text; 
     string pass = cryptedPassword; 
     if (user == "" || pass == "") 
     { 
      MessageBox.Show("Empty Fields Detected ! Please fill up all the fields"); 
      return; 
     } 
     bool r = validate_login(user, pass); 
     if (r) 
      MessageBox.Show("Correct Login Credentials"); 
     else 
      MessageBox.Show("Incorrect Login Credentials"+cryptedPassword); 

мой метод проверки:

private bool validate_login(string user, string pass) 
    { 
     db_connection(); 
     MySqlCommand cmd = new MySqlCommand(); 
     cmd.CommandText = "Select * from users where [email protected] and [email protected]"; 
     cmd.Parameters.AddWithValue("@user", user); 
     cmd.Parameters.AddWithValue("@pass", pass); 
     cmd.Connection = connect; 
     MySqlDataReader login = cmd.ExecuteReader(); 
     if (login.Read()) 
     { 
      connect.Close(); 
      return true; 
     } 
     else 
     { 
      connect.Close(); 
      return false; 
     } 
    } 

на Crypter.Blowfish.Crypt (textBox_password.Text) является worng. Я становлюсь хэш начинается с $ 2a $

может кто поможет решить эту проблему?

ответ

1

Если вы используете метод Crypter.Blowfish.Crypt, вам необходимо указать соль второго параметра, если она не указана, для вас создается случайная. Очевидно, что вы будете получать разные случайные значения при последующих вызовах.

Alternativly вы могли бы получить библиотеку Crypter проверить пароль, предоставленный на хэш:

if (Crypter.CheckPassword(password, cryptedPassword)) { 
    // Valid password code here 
    return true; 
} else { 
    // Invalid password code here 
    return false; 
} 

Вы, очевидно, нужно прочитать зашифрованную пароль из БД, но я считаю этот метод будет означать, что вы не» t необходимо предоставить/сохранить соль для хэша пароля.

HTH

+0

hmm php script не является моей работой. как я могу узнать параметр 2.? – Andreas

+0

Либо используйте что-то вроде 'Crypter.Blowfish.GenerateSalt (6)' и сохраните это значение, либо используйте строку по своему выбору (менее безопасную). Я обновил свой ответ, включив альтернативный метод, который должен позволить вам выполнить чек без необходимости хранить соль. – Graeme

Смежные вопросы