我目前在Visual Studio C#Windows窗体项目中工作。但是,我对SHA256 +盐腌的工作方式感到困惑。我在网上找到了一些示例,但无法理解如何调用此函数。

我想以连接数据库的登录表单(Microsoft Access 2010)调用此函数。

  • 如何通过单击按钮并阅读以下内容来调用此函数
    来自Textbox的密码?
  • 如何显示Messagebox.Show方法? (出于我的测试目的)
  • 是否可能
    比较两个文本(散列和加盐)并给出肯定的结果?
    public static string sha256encrypt(string phrase, string UserName)
    {
        string salt = CreateSalt(UserName);
        string saltAndPwd = String.Concat(phrase, salt);
        UTF8Encoding encoder = new UTF8Encoding();
        SHA256Managed sha256hasher = new SHA256Managed();
        byte[] hashedDataBytes =      sha256hasher.ComputeHash(encoder.GetBytes(saltAndPwd));
        string hashedPwd = String.Concat(byteArrayToString(hashedDataBytes), salt);
        return hashedPwd;
    }
    
    public static string byteArrayToString(byte[] inputArray)
    {
        StringBuilder output = new StringBuilder("");
        for (int i = 0; i < inputArray.Length; i++)
        {
            output.Append(inputArray[i].ToString("X2"));
        }
        return output.ToString();
    }
    
    private static string CreateSalt(string UserName)
    {
        string username = UserName;
        byte[] userBytes;
        string salt;
        userBytes = ASCIIEncoding.ASCII.GetBytes(username);
        long XORED = 0x00;
    
        foreach (int x in userBytes)
            XORED = XORED ^ x;
    
        Random rand = new Random(Convert.ToInt32(XORED));
        salt = rand.Next().ToString();
        salt += rand.Next().ToString();
        salt += rand.Next().ToString();
        salt += rand.Next().ToString();
        return salt;
    }
    

  • 如何用salt创建SHA256哈希?
    shavalue = (sha256encrypt("password", "username");
    saltedandhashtext = CreateSalt(shavalue);
    

    最佳答案

    对于第一个问题,请查看CC Inc的答案。

    第二点:MessageBox.Show(sha256encrypt(textBox1.Text, "SampleUserName"));
    3)是的。

    您可以使用==比较器或string.Equals()比较两个字符串。

    public bool compareHashs(string hash1, string hash2){
       if(hash1.Equals(hash2) //or hash1 == hash2
          return true;
       }else{
          return false;
       }
    }
    

    关于c# - 如何用Salt创建SHA256哈希?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14112440/

    10-14 18:04
    查看更多