0

数据表:people_t

列:

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

询问:

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

  • 用户名: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 子句还是我在这里做错了什么?

先谢谢各位了。

4

2 回答 2

1

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

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

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


不确定上面代码中的 SHA1 类型是什么 - 不认识。

于 2013-11-27T13:52:55.793 回答
0

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

您的查询 :

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

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

文档
如何选择加密算法

于 2013-11-27T14:37:17.377 回答