Сравнение хешбайтов в хранимых процедурах не соответствует записи - PullRequest
1 голос
/ 12 января 2010

Поле пароля в моей пользовательской таблице (SQL Server 2008) зашифровано с использованием HASHBYTES при вставке. У меня есть хранимая процедура с параметрами для имени пользователя и обычного текстового пароля, которая выполняет SELECT, используя это имя пользователя и пароль, отправленные через HASHBYTES, а затем возвращает запись пользователя, если обнаружит совпадение. SP всегда возвращает пустой набор записей, но если я скопирую и вставлю только SELECT из SP в новое окно запроса, он вернет соответствующую запись. Других утверждений в SP нет. Я что-то здесь упускаю; что это?

Ответы [ 2 ]

2 голосов
/ 12 января 2010

Если SELECT сам по себе работает, но внутри процедуры это не так, первое, что я бы искал, это типы параметров. Хеш будет сильно различаться при одинаковом вводе, но разных типах:

select hashbytes('MD5','Lorem Ipsum'), hashbytes('MD5',N'Lorem Ipsum')
0 голосов
/ 12 января 2010

Как вы передаете параметры при вызове из своего кода? Есть ли встроенные CR / LF или пробелы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...