SQL Server语言 - 如何插入一个哈希密码表?



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

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')

但是我怎么把它们结合起来呢?

如前所述,我不明白这里的问题。只要在参数化的INSERT中使用HASHBYTES:

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

旁注:正如我在另一个答案中提到的,bigint不是电话号码的正确选择。电话号码可以以"0"开头,包含数字中的其他字符。像'01234567890'这样的值将被更改为1234567890,像'+441234567890'这样的数字将被更改为441234567890,像'(01234) 567890'这样的数字将完全失败INSERT

declare @Users table (passwordColumn NVARCHAR(32));

insert @Users values (HASHBYTES('SHA2_256','Password@1234.'));

select HASHBYTES('SHA2_256', passwordColumn) from @Users;

最新更新