0

考虑对我的登录表单进行一些修改,而不是将密码作为变量放入我的代码中,有没有一种方法可以加密它并将其存储在文本文件中,这样每次我想登录时,它都会比较来自文本文件??

private void button1_Click(object sender, EventArgs e)
        {
            string username1 = "Richard";
            string password1 = "Peugeot";

            if (this.textBox1.Text == username1 && this.textBox2.Text == password1)
            {
                MessageBox.Show("Welcome Richard!", "Welcome");
                Form1 frm = new Form1();
                frm.Show();
                this.Hide();
            }
            else
                MessageBox.Show("Incorrect username or password", "Bad credentials");
        }
4

3 回答 3

2

我建议将您的密码存储为散列而不是加密(散列是加密可逆的一种方式)。我在这里写过这个(密码存储,如何正确操作)。

我还编写了一段代码来使用 SHA512 对字符串进行哈希处理,代码在 VB.NET 中,但将其移至 C# 应该很简单,代码可在此处获得(计算字符串或文件的 SHA512 哈希) .

如果您散列密码并将其与您存储在文件中的散列进行比较,如果两者匹配,则它们提供的密码与最初散列的密码相同。

正如 J. Steen 在下面的评论中提到的,我没有明确表示您还应该对哈希进行加盐,这是在对密码进行哈希处理之前将预定义的字符串添加到密码中。这使得任何人都更难暴力破解纯文本。因此,例如,如果密码是Password1(我知道密码多棒),您可以在开头添加一个字符串,该字符串将存储在您的应用程序中,例如~{}:@>?!"£$)&(*$. 然后,您将对 value 进行哈希处理~{}:@>?!"£$)&(*$Password1。当您想检查用户在登录时是否提供了相同的密码时,您可以使用相同的盐以及他们提供的密码。

希望可以解释一下,如果没有,并且您觉得第一个链接无法帮助您理解,请随时告诉我:D

于 2013-04-16T07:53:01.483 回答
2

您当然可以,只需在您的文件中写入密码 SHA1 - 或更好 - SHA2 加密并每次进行比较(感谢 J. Steen 的提及!),但我强烈建议您要这样做 - 这根本不安全。

于 2013-04-16T07:31:56.607 回答
0

好吧,你可以让程序有它自己的加密代码。例如,将所有“a”更改为“kra/”。

但正如上面提到的那样,这并不安全。但根据您的使用情况,可能不必如此。

于 2013-04-16T07:35:53.920 回答