2013-11-27 18 views
0

數據表:people_t替換一個與值(用戶名),散列類型的多個密碼去

列:

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

查詢:

我想改變類型的多個密碼哈希成爲用戶名。在命令後,密碼仍然應該被散列,但實際的密碼將是用戶的用戶名。例如。

  • 用戶名:johndoe的
  • PasswordHash:iamjohn

將變爲:

  • 用戶名:johndoe的
  • PasswordHash:johndoe的

我想在F如下:

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 [email protected] --Do the job 

我甚至需要一個WHERE子句,或者我在這裏做錯了什麼?

在此先感謝各位。

+0

此:'DECLARE @UserPass SHA1'是不是在它自己的有效的T-SQL,因爲沒有所謂的'SHA1' T-SQL數據類型。 – RBarryYoung

回答

1

我想你可能想要什麼(對於SQL Server)是這樣的:

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

你的僞代碼似乎創下了單哈希(這將是基於一個用戶名),然後更新所有的人那個單一用戶名。


不知道什麼SHA1類型在上面的代碼 - 不承認。

+0

感謝迄今傢伙!你可以告訴我有關SQL Server和T-SQL的新內容。所以,帕迪,你是說我需要的是SET和更新密碼以便更改:SET @ UserPass = UserName - 將當前用戶名添加到UserPass var UPDATE people_t set PasswordHash = HASHBYTES('SHA1',UserPass) – ParttimeCoder

+0

即使我的當前數據類型都是nvarchar,我也使用SHA1哈希? – ParttimeCoder

+0

我不能告訴你使用什麼散列算法,或者如果這對你的系統是正確的,抱歉。你可能需要小心,你的哈希沒有被鹽漬,否則所有這一切都會破壞你的登錄。評論是不是一個真正的代碼的好地方,不確定如何讀取.. – Paddy

0

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

您的疑問:

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

與上述任何一個替換算法。

Documentation
How to choose an encryption algorithm

+0

注 - 可能重要的是要堅持任何算法最初散列的密碼,否則你會遇到困難與您的授權碼檢查... – Paddy

+0

謝謝...有沒有找到這些數據類型的算法?這樣我可以仔細修改。 – ParttimeCoder

+0

@ParttimeCoder U可以在Wikipedia上查找這些算法。評論你是否找不到它們。 –