使用してASP.NETハッシュパスワード:私は、ユーザによって入力されたパスワードをハッシュし、次のコードを、持って、その後、SQL Serverデータベースに格納するしましたMD5
Byte[] originalPassword;
Byte[] hashedPassword;
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
UTF8Encoding encoder = new UTF8Encoding();
originalPassword = encoder.GetBytes(passwordBox.Text);
hashedPassword = md5Hasher.ComputeHash(originalPassword);
command.Parameters.Add(new SqlParameter("Password", hashedPassword));
command.ExecuteNonQuery();
私の問題があることです私はすでにデータベースに保存されているいくつかの平文パスワードを持っています。 「0xA99ED ....」と表示されるので、どのように正確にこの新しいハッシュ形式に変更するのですか?
[OK]を、あなたはMD5を使用する必要がありますので、何らかの理由で...少なくともあなたは塩を使うことはできませんでしたか?とにかく、あなたは文字列とバイナリが同等であると仮定しているようです - そうではありません、エンコーディングが必要です。 – Aaronaught
問題は何ですか? nvarcharに変更すると、binary16列が同じ結果を持つことは期待できません。 –
あなたの問題はその文章の中にあると思います。「手動でMD5を文字列形式で入力し、データ型をバイナリ(16)に戻しました。ハッシュの16進表現を入力し、16進表現の各文字のバイナリ値を取ってバイナリに変換した場合、結果は同じではありません... –