gpt4 book ai didi

c# - 如何使用 Salt 创建 SHA256 哈希?

转载 作者:太空狗 更新时间:2023-10-30 00:54:05 25 4
gpt4 key购买 nike

我目前正在开发一个 visual studio C# windows 窗体项目。但是,我对 SHA256 + salted 的工作原理感到困惑。我在网上找到了一些示例,但无法理解如何调用此函数。

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

  • 如何通过单击按钮并阅读来自文本框的密码?
  • 如何显示散列值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;
    }

如何使用盐创建 SHA256 哈希?

shavalue = (sha256encrypt("password", "username");
saltedandhashtext = CreateSalt(shavalue);

最佳答案

您要做的是,在单击按钮时,将文本框值和用户名传递给 sha256encrypt 函数,例如:

    private void button1_Click(object sender, EventArgs e)
{
sha256encrypt(textBox1.Text, "SampleUserName");
}

对于第二个问题,使用 Messagebox.Show 做同样的事情:

    private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(sha256encrypt(textBox1.Text, "SampleUserName"));
}

第三点:我不太确定你的意思,但是如果你想对文本加盐并将其与散列文本进行比较:

if(sha256encrypt("password", "username") == CreateSalt("password"))
return true;
else
return false;

或者如果您想手动比较它们:

MessageBox.Show(sha256encrypt("password", "username") + "\n\r" + CreateSalt("password"));

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com