一次性替换多个散列值(用户名)类型的密码



数据表:people_t

列:

Username - nvarchar(200)
PasswordHash - nvarchar(1000)

查询:

我想将hash类型的多个密码更改为用户名。命令发出后,密码仍应进行哈希处理,但实际密码将是用户的用户名。例如

  • 用户名:johndoe
  • 密码哈希:iamjohn

将变成:

  • 用户名:johndoe
  • 密码哈希:johndoe

我正在尝试以下操作:

DECLARE @UserPass SHA1 --Var for storage of username
SET @UserPass=UserName --Add current Username's to UserPass var
UPDATE people_t --Update the people_t
SET PasswordHash=@UserPass --Do the job

我需要WHERE子句吗?或者我做错了什么?

提前感谢各位。

我认为(对于sql server)您可能想要的是:

update people_t set passwordhash =  HASHBYTES('SHA1', username)

您的伪代码似乎设置了一个散列(基于一个用户名),然后用该用户名更新所有人。


不确定上面代码中的SHA1类型是什么——不要识别。

您可以使用任何算法:MD2、MD4、MD5、SHA、SHA1、SHA2_256、SHA2_512

您的查询:

UPDATE people_t set PasswordHash =  HASHBYTES('ALGORITHM', UserName)

将ALGORITHM替换为上述任何一个。

文档
如何选择加密算法

最新更新