HashBytes возвращает VARBINARY результат, т.е.байтовый массив.Я настоятельно рекомендую вам сохранить этот тип, не конвертируйте его в строку.Если вам необходимо преобразовать его, используйте кодировку Base64.
Прямо сейчас ваша процедура преобразует хэш в строку Unicode, но это неверно, поскольку не все комбинации байтов действительны в Unicode, и хеш может ударить недействительнымСимволы Unicode.
ALTER PROCEDURE dbo.ConvertToHash
(
@stringToHash nvarchar(256),
@hashedString binary(20) OUTPUT
)
AS
SET @hashedString = HashBytes('SHA1', @stringToHash);
Убедитесь, что вы сохранили хешированное значение как BINARY (20) везде в своем коде и используйте его как byte[]
в своем клиенте.Никогда не конвертируйте хеш в строку (это относится ко всем языкам и платформам).