我目前正在开发一个 Visual Studio C# Windows 窗体项目。但是,我对 SHA256 + salted 的工作原理感到困惑。我在网上找到了一些例子,但无法理解如何调用这个函数。
我想在连接到数据库(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);
您要做的就是单击按钮,将文本框值和用户名传递给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"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)