抱歉我的无知,但我想在我的数据库中存储哈希密码,如何使用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;