2016-05-21 31 views
1

Ich aktualisiere derzeit eine Website zur Authentifizierung von einem HashBytes SHA2_512 SALT Kombination Passwort.SQL Update HashBytes SHA2_512 Passwörter zu HashBytes SHA2_512 SALT

Mein Problem ist, dass sobald ich dies tun alle meine derzeitigen Benutzer nicht mehr in der Lage sein werden, sich mit ihrem bestehenden HashBytes SHA2_512 Passwort einzuloggen.

Gibt es eine Möglichkeit, das aktuelle HashBytes SHA2_512-Passwort mit einem HashBytes SHA2_512 SALT-Kombinationspasswort über SQL zu entschlüsseln (zu aktualisieren).

Hier ist ein Beispiel für meine Auswahl zu überprüfen.

//current which will no longer work once i have updated the page 

SELECT intcustomerid, strUserName, strUserPassword 
FROM dbo.tblLoginControl WHERE strUserName = 'Dave' AND strUserPassword =HashBytes('SHA2_512', 'Rice205H*!') 


//new one once I have update the page 

SELECT [AccountName], [AccountPwd] 
FROM [dbo].[SecurityAccounts] WHERE [AccountName]= 'Dave' AND [AccountPwd] =HashBytes('SHA2_512', [Salt] + 'Rice205H*!') 

Also muss ich das vorhandene Passwort nehmen und mit Salt aktualisieren.

Ich bin nicht sicher, ob dies getan werden kann und die einzige Problemumgehung wäre, meine Benutzer per E-Mail zu bitten, ein neues Passwort von der Site anzufordern.

Danke.

+0

@artjom Dank. Dies könnte der beste Weg und weniger Schmerzen für meine Benutzer sein. Ich habe einen Blick und antworte kurz. – raymantle

+1

Dies ist ein gutes Beispiel dafür, warum es eine gute Idee ist, Hashes mit einer Version voranzuzählen. – zaph

+0

@zaph Können Sie erklären, was Sie mit "Präfix-Hashes mit einer Version" meinen – raymantle

Antwort

1

Es gibt keine Möglichkeit, ein Hash-Passwort zu "entschlüsseln". Warum fügen Sie keine Spalte (Bit) hinzu, in der Sie speichern, wenn das Passwort mit Salz verschlüsselt ist oder nicht?

Dann ist es nur eine weitere conditon wie:

AND ((isSalted = false 
     AND strUserPassword =HashBytes('SHA2_512', 'Rice205H*!')) 
    or [AccountPwd] =HashBytes('SHA2_512', [Salt] + 'Rice205H*!'))