David Hayden氏のブログ(http://davidhayden.com/blog/dave/archive/2004/02/16/157)に公開されているアプローチです。 aspx)を使用してsaltを作成し、ユーザーのパスワードと生成されたsaltを取得し、SHA1を使用して値をハッシュしてユーザーのパスワードをハッシュします。ASP.NET:複数のサーバーでSHA1 + Saltパスワードをハッシュする
次に、saltとハッシュされたパスワードをデータベースに保存します。
ウェブサイトは現在負荷分散されているので、結果のハッシュ値が両方のサーバーで同じになるかどうかは分かりませんでした。ここで
はデビッド・ヘイデン氏のブログに掲載されたコードの抜粋です:
private static string CreateSalt(int size)
{
//Generate a cryptographic random number.
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] buff = new byte[size];
rng.GetBytes(buff);
// Return a Base64 string representation of the random number.
return Convert.ToBase64String(buff);
}
private static string CreatePasswordHash(string pwd, string salt)
{
string saltAndPwd = String.Concat(pwd, salt);
string hashedPwd =
FormsAuthentication.HashPasswordForStoringInConfigFile(
saltAndPwd, "sha1");
return hashedPwd;
}
私が尋ねる理由は、このコードは、コードスニペットを使用していることである:
FormsAuthentication.HashPasswordForStoringInConfigFile(
saltAndPwd, "sha1");
塩をASCII文字に制限しないでください。 – SLaks
私は 'Rfc2898DeriveBytes'をユーザーごととアプリケーションごとに塩が好きです。 – CodesInChaos
@コード:ASCII文字はレインボーテーブルで見つかる可能性が高くなります。 – SLaks