为hashbytes声明变量

mv1qrgav  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(238)

下面是这个问题的简单例子:

DECLARE @HASHBYTES VARBINARY(128) = hashbytes('sha2_256', 'secret')
SELECT cast(N'' as xml).value('xs:base64Binary(sql:variable("@HASHBYTES"))', 'varchar(128)');

它返回正确的哈希值: K7gNU3sdo+OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols= 现在,我尝试按照microsoft hashbytes文档示例将secret声明为变量:

DECLARE @HashThis nvarchar(32);  
SET @HashThis = CONVERT(nvarchar(32),'secret');
DECLARE @HASHBYTES VARBINARY(128) = hashbytes('sha2_256', @HashThis)
SELECT cast(N'' as xml).value('xs:base64Binary(sql:variable("@HASHBYTES"))', 'varchar(128)');

它返回一个错误的哈希:

s6jeuSg7FUrj9WBqMj0GbSRudEDi2NTJqHqmG5UYOiY=

有没有办法将secret声明为变量以获得正确的散列?
我对sql中的hashbytes是个新手。我正在sql server 2017上使用它。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题