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.
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