SQL 服务器 - 如何将散列密码插入 table?

SQL Server - How to insert a hashed password to a table?

抱歉我的无知,但我想将散列密码存储在我的数据库中, 如何使用 HASHBYTES 方法将散列密码存储在 Users table 中?

CREATE TABLE [Users](
    EmailAddress NVARCHAR(320) UNIQUE,
    UserID INT IDENTITY(1,1) PRIMARY KEY,
    UserPassword NVARCHAR(32), -- I Edited the length
    FirstName VARCHAR(256) not null,
    LastName VARCHAR(256) not null,
    MobileNumber BIGINT,
)

--我查了一下,发现这是散列密码的方法

declare @afterhash varbinary(256) = HASHBYTES('SHA2_256', 'P@ssw0rd')

但是我该如何将它们结合起来呢?

声明@Users table (passwordColumn NVARCHAR(32));

插入@Users 值 (HASHBYTES('SHA2_256','Password@1234.'));

select 来自@Users 的 HASHBYTES('SHA2_256', passwordColumn);

如前所述,我不明白这里的问题。只需在参数化的 INSERT:

中使用 HASHBYTES
INSERT INTO dbo.Users (EmailAddress, UserPassword, FirstName, LastName, MobileNumber)
VALUES(@EmailAddress, HASHBYTES('SHA2_256',@Password), @FirstName, @LastName, @MobileNumber); 

旁注:正如我在其他 中提到的,bigint 不是电话号码的正确选择。 Phone 数字可以以 0 开头并包含数字中的其他字符。像 '01234567890' 这样的值将更改为 1234567890,像 '+441234567890' 这样的数字将更改为 441234567890,而像 '(01234) 567890' 这样的数字将无法 INSERT完全