2011-09-10 5 views
0

SQL Serverには、MD5でパスワードハッシュされた1つのnvarchar列があります。私はテスト目的のためにこの列を照会したい。私はこのようなクエリを実行するためにSQL Server Management Studioを使いました。MD5でハッシュされた列のSQL Serverを照会

select * from users where Password = HASHBYTES('MD5','password'); 

私はこのようなクエリをMYSQLで使用することを覚えていますが、SQL Serverでどのように行うかわかりません。

注:私はMD5からプレーンに変換することを求めていません。アプリケーションが正しくパスワードをハッシュしていることをテストしたいだけです。

編集:
私はSQL ServerのMD5ハッシュ

using System.Web.Security; 
.... 
FormsAuthentication.HashPasswordForStoringInConfigFile(stringToEncrypt, "MD5"); 
+1

クエリを実行するとどうなりますか?ハッシュが 'VARBINARY'として保存されていないのはなぜですか? –

+0

クエリは実行されますが、0行が返されます。私は、VARBINARYの代わりにVARCHARを使用する可能性についてはあまりよく分かりません。実際には、コードファーストエンティティモデルから生成されたデータベースを使用しました。そのEntityModelでは、パスワードフィールドとしてstringを使用し、データベースのフィールドのVARCHARカラムを生成しました。 – Jatin

+1

文字列ではなくハッシュされたパスワードを使用することに決めました(これは良いことです!)、データベーススキーマを更新することを考慮する必要があります。私はCFEMを使ってそのことを行う方法を教えてもらいたいと思いますが、私の本能はいつもDesign First Code Laterになる予定です。 –

答えて

0

同じ機能を生成するために、以下を使用しますが、戻り値はvarbinary型ではなく、varchar型です。http://msdn.microsoft.com/en-us/library/ms174415.aspx

EDIT:あなたに基づいて、質問の編集、オブジェクトとデータベースを文字列ではなくバイト配列に変更することをお勧めします。それは物事をよりきれいに保ち、HashBytes関数を使ってデータベースに問い合わせることができます。これを行うには、EFフィールドタイプ "バイナリ"を使用できます。値を生成するには、MD5クラスのComputeHashメソッドを使用します。これは、現在のメソッドがやっていることです。

+0

私はあなたから提案された変更を試みます。私は成功するとあなたに知らせます。助けてくれてありがとう – Jatin

関連する問題