2016-07-16 10 views
0

Sagen wir, ich habe eine Tabelle wie folgt aus:mit Salzen in Hashing

create table [User] (ID int identity not null,EmailAddress varchar(50), [Password] nvarchar(128),primary key (ID)) 

Meine Lektüre ist mir zu sagen, dass ich ein Salz der Tabelle hinzufügen sollte:

alter table [user] add salt nvarchar(128) 

Wenn ein Benutzer ein Konto erstellt in der Anwendung dann glaube ich, die SQL sollte wie folgt sein:

declare @RandomNumber as varchar(32) 
set @RandomNumber=rand(); 
insert into [user] (emailaddress,[password],salt) values ('[email protected]',hashbytes('sha2_256','passwordvalue' + @RandomNumber),@RandomNumber) 

Dann sagen wir, dass der Benutzer authentifizieren möchte. Die SQL wäre wie folgt:

Die letzte SQL-Anweisung gibt nichts zurück, was beweist, dass es falsch ist.

+1

Gerade FYI, ist dieser Ansatz nicht viel Sicherheit zu Ihrem Passwort hinzufügen. Alle diese Hash-Algorithmen sind sehr schnell. Wenn jemand Zugang zu Ihrer Tabelle hat, wenn er diese Felder sieht, muss er nur einige Kombinationen von Hash-Algorithmen ausprobieren und wird in der Lage sein, Ihre Passwörter zu knacken. Zum Beispiel könnte er leicht Ihre Formel finden, verwenden Sie es mit einem Passwort-Wörterbuch und wenn nur eines übereinstimmt, sind Sie fertig. Es würde höchstens einige Minuten dauern. Wenn Sie sich Sorgen um die Sicherheit machen, empfehle ich Ihnen, bcrypt oder einen anderen ** langsamen ** Hash zu verwenden: http://blog.tcs.de/using-the-bcrypt-hash-algorithm-in-ms-sql-server – Andrew

Antwort

0

Verwendung varchar und nicht nvarchar- es convertion probleme oder erklären @RandomNumber als nvarchar (32) wie folgt aus:

declare @RandomNumber as nvarchar(32) 
set @RandomNumber=rand(); 
insert into [user] (emailaddress,[password],salt) values ('[email protected]',hashbytes('sha2_256','passwordvalue' + @RandomNumber),@RandomNumber) 
+0

Danke. Ich habe @RandomNumber in einen nvarchar geändert und es funktioniert jetzt. Ich nehme an, es ist in Ordnung, nvarchar für das Passwort und Salz zu verwenden? – w0051977

+0

Habe ich das richtig angegangen, d. H. Das Passwort und das Salz im Passwortwert kombiniert? – w0051977

+0

Ich weiß es ehrlich gesagt nicht. Ich kann nur Fehler in Ihrem Code finden (wenn Sie überprüfen können, ich habe Antwort auf Ihre Frage;)) – Esperento57