Hashing-Kennwort in SQL
Ich bin hashing ein Kennwort in SQL direkt so :
DECLARE @HashThis nvarchar(4000);
SET @HashThis = 'SecretPizza'
INSERT into Users (UserId,Password)
Values ('CryptTest',HASHBYTES('SHA1', @HashThis))
Ergebnis :
Wenn ich versuche, und ändern Sie die SHA1
Algorithmus SHA2_256
oder SHA2_512
bekomme ich die folgende Fehlermeldung :
Frage 1 - Ist das wirklich geben soll mich von Chinesen-Zeichen ?
Frage 2 - Diese sind gültig Algorithmus so, wie Sie kommen kann ich Sie nicht benutzen und warum ist eine Verschlüsselung Einstellung @HashThis
auf null?
- Was ist der Datentyp der Spalte Benutzer.Passwort?
- verwenden Sie nicht
hashbytes
für diese - man kann Sie nicht Salz mithashbytes
, und Sie beschränken sich auf eine schlechte Auswahl der (bereits kaputt) - algorithmen. Betrachten Sie stattdessen mitbcrypt
auf der Anwendungs-Ebene und einfügen des hash daraus generiert. - Es ist vom Datentyp NVARCHAR. Was soll es sein ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Frage 1: Sie bekommen "Chinesen" Zeichen, da Sie das einfügen einer varbinary-Wert zurückgegeben HASHBYTES in eine nvarchar-Spalte, so dass SQL Server versucht, interpretieren die bytes als Unicode-Codepunkte (Zeichen).
Frage 2: Nicht unterstützt, bevor Sie SQL Server 2012 - siehe SQL Server 2008 R2 HASHBYTES SHA2 gibt null zurück
zuerst
wählen Sie HASHBYTES('SHA2-256', @HashThis) from dual;
und sehen, was Sie erhalten..
select HASHBYTES('SHA2_256', @HashThis)
- Hinweis: ein Unterstrich im name des Algorithmus, nicht Bindestrich.