public bool Login(string userName, string password) { bool result = false; User u = GetUserByUserName(userName); if (u != null) { byte[] typedPw = PasswordHelper.GenerateSaltedHash(StringUtils.GetByteArray(password), u.Salt); // eingegebenes pw beim login wird mit dem salt (der in der DB ist) gehasht result = PasswordHelper.CompareByteArrays(u.Password, typedPw); // pw der datenbank (schon beim registrieren gesalthashed) wird mit dem jetzigen hash verglichen, falls gleich user eingeloggt } return(result); }
private async void BtnIniciar_Click(object sender, EventArgs e) { if (txtUsuario.Text.Trim().Length > 0 && txtPassword.Text.Trim().Length > 0) { var usuario = await _usuarioRepository.GetUsuario(txtUsuario.Text.Trim().ToUpper()); if (usuario.Usuario != null) { var saltArray = Encoding.UTF8.GetBytes(Salt); var passArray = Encoding.UTF8.GetBytes(txtPassword.Text.Trim()); var ContraArray = PasswordHelper.GenerateSaltedHash(passArray, saltArray); var dbArray = Convert.FromBase64String(usuario.Password); IsLogin = PasswordHelper.CompareByteArrays(dbArray, ContraArray); if (IsLogin) { Nivel = usuario.Nivel; this.Close(); } else { MetroFramework.MetroMessageBox.Show(this, "Ingresar Contrase o Usuario valido", "Avertencia"); txtPassword.Text = ""; txtPassword.Focus(); } } else { MetroFramework.MetroMessageBox.Show(this, "Ingresar Contrase o Usuario valido", "Avertencia"); txtPassword.Text = ""; txtPassword.Focus(); } } else { MetroFramework.MetroMessageBox.Show(this, "Llenar los campos", "Aviso"); } }