使用哈希来保护文件中的密码

时间:2016-12-30 22:10:34

标签: c# forms hash

我已经浏览过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写入文件之前如何使用它来散列

1 个答案:

答案 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());