Я пытаюсь войти в учетную запись mybb на моем форуме. Мне нужно использовать базу данных SQL для входа в систему, но пароли хешируются. Я пробовал почти все, включая хеширование пароля для входа в систему, но это просто не сработает.
Он работает с обычным нехешированным паролем, но не с хешированным.
string salt = Global.salt; // get salt from db
string password = textBox2.Text;// get password from user
MD5 md5 = new MD5CryptoServiceProvider();
// Create md5 hash of salt
byte[] saltBytes = Encoding.Default.GetBytes(salt);
byte[] saltHashBytes;
using (Stream saltStream = GenerateStreamFromString(salt))
{
saltHashBytes = md5.ComputeHash(saltStream);
}
string saltHash = System.BitConverter.ToString(saltHashBytes);
// Create your md5(password + md5(salt)) hash
byte[] passwordBytes = Encoding.Default.GetBytes(password + saltHash);
byte[] passwordHashBytes;
using (Stream saltStream = GenerateStreamFromString(salt))
{
passwordHashBytes = md5.ComputeHash(saltStream);
}
string passwordHash = BitConverter.ToString(passwordHashBytes);
MessageBox.Show(passwordHash);
cmd = new MySqlCommand();
con.Open();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM testfdata_users where username='" + textBox1.Text + "' AND password='" + passwordHash + "'";
dr = cmd.ExecuteReader();
if (dr.Read())
{
MessageBox.Show("Login success ");
}
else
{
MessageBox.Show("Invalid Login please check username and password");
}
con.Close();
Вот как я беру соль из базы данных.
MySqlConnection con2 = new MySqlConnection("Server=host.com;Database=baseName;user=username;Pwd=pass;SslMode=none");
MySqlCommand cmd = new MySqlCommand("SELECT * FROM testfdata_users", con2);
con2.Open();
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Global.salt = reader.GetString("salt");
}