1

ユーザーのパスワードを暗号化する以下のスニペットに出くわしました。暗号化せずにユーザーのパスワードをデータベースに保存したくないので、これが私がやりたいことです。

これは私が達成したいことにはうまく機能していますが、私の質問はこれです:パスワードボックスに入力した値が一致することを確認するために暗号化を解除するにはどうすればよいですか?

// Hash the password details of the user!
private static string CreatePasswordHash(string pwd, string salt)
{
  string saltAndPwd = string.Concat(pwd, salt);
  string hashedPwd = 
    FormsAuthentication.HashPasswordForStoringInConfigFile(saltAndPwd, "SHA1");
  hashedPwd = string.Concat(hashedPwd, salt);
  return hashedPwd;
}

私は上記をこのように呼びます

string password = CreatePasswordHash(TxtPassword.Text, "1579");

パスワードは次のようになります。566DAB495AD0747B49865F9177E430DFAD63CA281579

では、どうすれば暗号化を解除できますか?

お時間をいただきありがとうございます。

4

2 に答える 2

8

まず、独自のパスワードストレージシステムを作成しようとしないでください。あなたはそれを間違え、安全でないシステムを構築するでしょう。この種のことを専門とする専門家を雇い、彼らにシステムを書いてもらい、その正しい使用法と保守についてあなたを訓練してもらいます。

第二に、そのコードの要点は、ユーザーのパスワードを見つけることが不可能であるということです。彼らのパスワードはあなたの仕事ではありません。ソルトハッシュのポイントは、最初からパスワードを保存する必要がないが、パスワード知っていることを確認できる検証システムを構築することです。

それがどのように機能するかを理解するために、その主題に関する私の4部構成の一連の記事を読んでください。

http://blogs.msdn.com/b/ericlippert/archive/tags/salt/

しかし、これも自分でやろうとしないでください。セキュリティ作業を行う必要がある場合は、この分野で数十年の経験を持つ専門家を雇ってください。

于 2012-04-28T15:12:50.690 に答える
5

ハッシュのポイントは、誰もそれを解読できないということです!

ユーザーがログインを試みると、入力したパスワードをハッシュし、そのハッシュをデータベースの内容と比較します。ハッシュが一致する場合、パスワードは正しかったことになります。

于 2012-04-28T12:50:15.737 に答える