我想在我的数据库中存储散列密码,我使用了以下代码:
ALTER PROCEDURE AddUser
@name NVARCHAR(MAX),
@password NVARCHAR(MAX),
@responseMessage NVARCHAR(MAX) OUTPUT
AS
Begin
SET NOCOUNT ON
INSERT INTO [User] (Username, PasswordHashed)
VALUES (@name, HASHBYTES('SHA2_512', @password));
END
为了验证用户我使用以下代码:
SELECT COUNT(*)
FROM [User]
WHERE [User].Username = 'Bamdad' AND [User].PasswordHashed = HASHBYTES('SHA2_512', 'hi');
但结果是0
。为什么后一个代码不起作用?
答案 0 :(得分:2)
您将密码<div id="graph" onload="function()"></div>
指定为'hi'
,但程序需要varchar
。因此nvarchar
会被一个额外的字节提升为varchar
,因此加密的差异。