0

我正在尝试在 SQL Server 中加密密码,当我使用字符串与使用准备好的语句参数时,我得到了两个不同的结果。

例如:

SELECT 
    sys.fn_varbintohexstr(HASHBYTES('sha1', ?)),
    sys.fn_varbintohexstr(HASHBYTES('sha1', 'password'))

在哪里?由“密码”填充。它给了我

0xe8f97fba9104d1ea50479...
0x5baa61e4c9b93f3f06822...

为什么我得到两个不同的结果应该是同一件事?

此外,这仅在 SQL Server 中发生,如果我在 MySQL 中执行类似的查询,它会为两者返回相同的值。

我知道我应该使用更好的加密,但我现在坚持使用 sha1(无盐)。

谢谢

4

1 回答 1

1

一个是 varchar 另一个是 nvarchar

SELECT 
 sys.fn_varbintohexstr(HASHBYTES('sha1','password')),
 sys.fn_varbintohexstr(HASHBYTES('sha1',N'password'))

返回

0x5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
0xe8f97fba9104d1ea5047948e6dfb67facd9f5b73
于 2013-05-30T22:21:58.973 回答