Я использую эту хранимую процедуру для хэша и записываю пароль в таблицу SQL Server.Запись значений VARBINARY в столбец NVARCHAR в SQL Server 2008
DECLARE @PassWord as nvarchar(2000) = 'PSW'
...
DECLARE @MD5Password nvarchar(2000);
SELECT @MD5Password = CONVERT(nvarchar(2000),@Password);
SELECT HASHBYTES('MD5', @MD5Password);
SET @MD5Password = HASHBYTES('MD5', @MD5Password)
INSERT INTO [MyDataBase].[MyDatatable] (Column1)
VALUES (@MD5Password)
Тип Column1
является nvarchar(2000)
.
Когда я использую этот код для написания пароля в MyDatatable, результат не тот, который я ожидал, он написан как китайские иероглифы.
Я знаю, что это потому, что преобразование из varbinary
(типа @MD5Password
) для nvarchar
, но я не знаю, как я должен сделать, чтобы написать хорошие значения в Mydatatable?
Вы можете помочь с этим!
Могу ли я спросить, почему вы не делаете колонку varbinary? –
Hi, @Aaron. Потому что столбец был создан другим софт, которому нужен nvarchar для этого столбца. – Chalumeau
Ну, другое программное обеспечение не должно читать пароль, не обращая внимания на его преобразование в обычный текст, прежде чем делать это. Какой смысл хешировать его, если вы собираетесь конвертировать его в строку и передать ее в приложение? Приложение должно взять пароль, предоставленный пользователем, хэш, и сравнить его с хешированным паролем, который вы сохранили. После того, как он будет сохранен, не должно быть абсолютно никакой причины, по которой кто-либо должен был преобразовать его обратно в обычный текст. То, что вы пытаетесь сделать, звучит как очередной фиаско Adobe, ожидающее своего появления. –