我想散列一个varchar并将其存储在db中,但我遇到了问题 在检查它的值时,我认为我只需要再次哈希并与db值进行比较
ALTER PROCEDURE [dbo].[AddLecteur]
@userName NVARCHAR(50),
@PasswordHash NVARCHAR(50),
@biblioPrincip int
AS
BEGIN
SET NOCOUNT ON
declare @ErrorMessage NVARCHAR(250)
declare @salt varbinary(4)=crypt_gen_random(4)
BEGIN TRY
INSERT INTO lecteur(nom, motPassword, biblioPrincipal)
VALUES(@userName,HASHBYTES('SHA2_256',cast( @PasswordHash as varbinary(max))+@salt), @biblioPrincip)
SET @ErrorMessage='Success'
END TRY
BEGIN CATCH
SET @ErrorMessage=ERROR_MESSAGE()
END CATCH
END
插入的值是‰¥_#碿K¤IFÕšxHà6œûäÜô4îõ“R¨Ó 我在检查用户时是否应该获得相同的值,如果我使用在创建用户时插入的盐并以相同的方式散列用户输入? 第二个触发器散列提议以与创建用户时生成的提议进行比较
ALTER PROCEDURE [dbo].[CheckngUser]
@userName varchar(50),
@password nvarchar(50),
@libelle varchar(50)
AS
BEGIN
declare @salt varbinary(4)
set @salt=(select lecteur.salt from lecteur where lecteur.nom=@userName)
select HASHBYTES('SHA2_256',cast( @password as varbinary(max))+@salt),
le.id,le.nom,le.[motPassword],bi.libellé from lecteur as le
inner join biblio as bi on le.biblioPrincipal=bi.id
where le.nom=@userName and le.motPassword=HASHBYTES('SHA2_256',cast(
@password as varbinary(max))+@salt)
END
为什么我这里有这个值0x7774FB52EB1FB5D3DD731A8B64B4BA1A73F4893F8A3C9084248D774D83C3E326