SQL HASHBYTES('SHA2_512', @password) 到 C# 比较

问题描述

我正在尝试验证在 Windows 窗体中输入的密码。 sql 表字段是 PasswordHash(二进制(64),不为空。我通过 EF6 检索它并获得一个字节 []。我如何将值作为字符串或字节 [] 进行比较?这是我的代码得到了。

''' private void loginButton_Click(object sender,EventArgs e) {

        User login = new User();
        if (txtLoginName.Text != string.Empty || txtPassword.Text != string.Empty)
        {
            login = _user.GetUserByLoginName(txtLoginName.Text);
            if (login != null)
            {
                bool loginSuccess = sqlSHA2_512CompareLoginFormValue(txtPassword.Text,login.PasswordHash);

                if (loginSuccess)
                {
                    var fOrder = new OrderDashboard();
                    fOrder.Show();

                    this.Hide();
                }
                else
                {
                    MessageBox.Show("Login in Failed.","information",MessageBoxButtons.OK,MessageBoxIcon.information);
                }
            }
            else
            {
                MessageBox.Show("information missing in login attempt.",MessageBoxIcon.information);
            }
        }
    }

    public bool sqlSHA2_512CompareLoginFormValue(string password,byte[] encodedPassword)
    {
        string sqlPassword = HashBytes(encodedPassword);
        bool result = false;
        string convertedPassword = sqlPassword.TrimEnd('0');

        if (convertedPassword == password)
        {
            result = true;
        }

        return result;
    }

    public string HashBytes(byte[] encodedPassword)
    {
        var hasher = System.Security.Cryptography.SHA512.Create();
        byte[] hashBytes = hasher.ComputeHash(encodedPassword);
        string hash = Convert.ToBase64String(hashBytes);
        hasher.Clear();
        return hash;
    }'''

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)