電子メールがプレーンテキストでパスワードがSHA1として保存されているデータベースに保存されている資格情報に対して、ログインチェックを実行しようとしています。今のところ、ユーザーは手動で作成されています。ログインの詳細を確認するために、ストアドプロシージャを使用することにしました。ここに問題があります:
次のクエリは、SHA1でパスワードを返します。
SELECT HASHBYTES('SHA1', 'password')
// returns 0x5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8
次のクエリは、ユーザーの存在を確認します。
SELECT COUNT(*) from users where email='test@gmail.com'
and password='0x5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8' // returns 1
そして、ここにストアドプロシージャ('password'がプレースホルダーであるプロシージャ全体から抽出されたselectステートメント)がありますが、これは本来のように1を返さないようです。
SELECT COUNT(*) from users where email='test@gmail.com'
and password=(SELECT HASHBYTES('SHA1', 'password')) // returns 0
誰かが理由を知っていますか?