我已经浏览过SO并发现了一些有关使用哈希的有用信息,但实际上没有关于如何在C#中使用StreamWriter
函数的任何信息。
我在SO中使用的代码是我在这里找到的代码:How to hash a password - Christian Gollhardt
CODE
private void Accept_Click(object sender, EventArgs e)
{
usrpass = usrpassTextbox.Text.ToString();
usrid = usridTextbox.Text.ToString();
if (FileExists() == true)
{
if (DialogResult.OK == MessageBox.Show("This user already exists, overwrite?", "Warning", MessageBoxButtons.OKCancel))
{
using (StreamWriter streamWriter = new StreamWriter(usrid + ".txt"))
{
streamWriter.WriteLine(usrpass);
MessageBox.Show(id + "'s password has been saved");
}
}
}
else
{
using (StreamWriter streamWriter = new StreamWriter(usrid + ".txt"))
streamWriter.WriteLine(usrpass);
MessageBox.Show(id + " " + "'s password has been saved");
}
}
}
此外,我正在考虑将保存放入减少代码的方法中,我知道两次写出来没有意义。
期望的结果
我希望将正在写入.txt
文件的密码进行哈希处理,如果进行了哈希处理,当我编写一些检查用户&#的代码时,用户是否仍然能够登录? 39; s txt文件存在,然后读取密码?
我必须解开它吗?
到目前为止,我有从Christian借来的代码但不确定在将usrpass
写入文件之前如何使用它来散列
答案 0 :(得分:1)
public static string CreateMD5(string input)
{
// Use input string to calculate MD5 hash
using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create())
{
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
byte[] hashBytes = md5.ComputeHash(inputBytes);
// Convert the byte array to hexadecimal string
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("X2"));
}
return sb.ToString();
}
}
...
usrpass = CreateMD5(usrpassTextbox.Text.ToString());