Я пытаюсь сделать систему входа в систему. Все учетные записи в системе форума Mybb. Я хочу войти в систему клиента, используя базу данных mybb_users. Но пароли мд5. И есть двоеточие по имени: «соль». Как я могу зашифровать пароли при проверке пароля?
Это мои коды (если адрес электронной почты и пароль верны)
int count = 0;
while (myReader.Read())
{
count = count + 1;
}
if (count == 1) // IF Ok.
{
userLabel.Text = myReader[0].ToString();
loginSuccessTimer1.Enabled = true;
LoginFormSuccessBG loginSuccess = new LoginFormSuccessBG();
loginSuccess.Show();
}
Поскольку ваши пароли хранятся в базе данных MyBB, они будут иметь следующую форму:
md5(password + md5(salt))
Другими словами, сначала получите хэш md5 соли, затем добавьте его к паролю и затем создайте его хэш md5. В результате получается строка, которая будет храниться в базе данных MyBB.
Я считаю, что вы хотите сделать что-то вроде этого:
string salt = // get salt from db
string password = // get password from user
MD5 md5 = new MD5CryptoServiceProvider();
// Create md5 hash of salt
byte[] saltBytes = Encoding.Default.GetBytes(salt);
byte[] saltHashBytes = md5.ComputeHash(salt);
string saltHash = System.BitConverter.ToString(saltHashBytes);
// Create your md5(password + md5(salt)) hash
byte[] passwordBytes = Encoding.Default.GetBytes(password + saltHash);
byte[] passwordHashBytes = md5.ComputeHash(salt);
string passwordHash = System.BitConverter.ToString(passwordHashBytes);
Других решений пока нет …