数据表: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替换为上述任何一个。
文档
如何选择加密算法