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

パスワードを暗号化するのではなく、ハッシュ化して保存することをお勧めします (ハッシュ化は、暗号化が元に戻せる方法の 1 つです)。これについてはこちらに書いています (パスワードの保存、正しく行う方法)。

SHA512 を使用して文字列をハッシュするコードも作成しました。コードは VB.NET にありますが、C# に移行するのは非常に簡単なはずです。コードはこちらから入手できます (文字列またはファイルの SHA512 ハッシュを計算します) 。 .

パスワードをハッシュして、ファイルに保存したハッシュと比較すると、2 つが一致する場合、最初にハッシュされたものと同じパスワードが提供されたことになります。

J. Steen が以下のコメントで述べたように、ハッシュもソルトする必要があることを明確にしていませんでした。これは、パスワードをハッシュする前に、定義済みの文字列をパスワードに追加することです。これにより、誰でも平文を力ずくで攻撃することが難しくなります。たとえば、パスワードがPassword1(すばらしいパスワードであることはわかっています) の場合、アプリケーションに保存する文字列を のように先頭に追加します~{}:@>?!"£$)&(*$。次に、値をハッシュします~{}:@>?!"£$)&(*$Password1。ユーザーがログインで同じパスワードを提供したことを確認したい場合は、同じソルトと、提供されたパスワードを使用します。

そうでない場合は、最初のリンクが理解に役立たないと感じている場合は、お気軽にお知らせください:D

于 2013-04-16T07:53:01.483 に答える