Я не вижу функции хешбайта, но здесь она идет:
Преобразование ввода пароля в двоичный массив, если вы используете функцию hashbytes
на внутреннем SQL-сервере.
Hashbytes возвращает varbinary. Таким образом, если вы передадите нулевой терминатор, хеш не будет таким же. как в SQL hashbytes('SHA2_512,'stuff')
похоже на хеширование 's', 't' до 'f'. В конце нет \ 0. Но если вы параметризируете как строку в объекте sqlcommand, это добавит '\ 0' в конце, и SQL вычислит этот ноль. Поэтому, если вы преобразуете класс Encoding
в двоичный массив, параметром будет просто строка без нулевого терминатора.
У меня возникла похожая проблема, и я решил таким образом использовать addwithvalue
и его значение в двоичном виде.
Но вы знаете, что executetescalar возвращает объект. Если запрос возвращает ноль строк, объект будет иметь значение NULL, и вы не сможете ни преобразовать, ни преобразовать объект NULL ни во что. Таким образом, в операторе if говорится «если returningobject == null, то вы не авторизованы. Else ....»