2009-12-01 12 views
10

In meiner ASP.NET Web App hashing ich meine Benutzerpasswörter mit SHA512.Speichern eines SHA512 Password Hash in der Datenbank

Trotz viel SO'ing und Googeln ist mir unklar, wie ich sie in der Datenbank (SQL2005) speichern sollte - der folgende Code zeigt die Grundlagen, wie ich den Hash als String erstellen und ich bin derzeit Einfügen in die Datenbank in eine Char (88) -Spalte, wie es scheint, die Länge konsistent erstellt

Ist es als String der beste Weg, es zu tun, wenn es so wird immer 88 Zeichen auf einem SHA512 (wie ich einige bizarre Sachen auf Google gesehen habe)?

Dim byteInput As Byte() = Encoding.UTF8.GetBytes(sSalt & sInput) 
Dim hash As HashAlgorithm = New SHA512Managed() 
Dim sInsertToDatabase As String = Convert.ToBase64String(hash.ComputeHash(byteInput)) 
+0

Werfen Sie einen Blick auf [link text] (http://altairiswebsecurity.codeplex.com)/wenn Sie asp.net Mitgliedschaft verwenden möchten. Es hat eine sehr offene Tabellenstruktur, daher könnte es einfacher sein, sie in Ihre aktuelle Datenbank zu integrieren. – jhexp

Antwort

15

SHA512 gibt 512 Bits oder 64 Bytes aus. Sie können diese 64 Bytes in einer binären Spalte speichern, wenn Sie dies wünschen.

Wenn Sie den Hash außerhalb Ihrer Anwendung behandeln möchten, ist es komfortabler, einen Base64-String zu speichern, wie Sie es jetzt tun. Base64 fügt ungefähr 33% des konstanten Aufwands hinzu, so dass Sie erwarten können, dass die Zeichenfolge immer 88 Zeichen lang ist.

Das sagte, ASP.NET hat eine fairly comprehensive authentication system Builtin, die Sie verwenden sollten.

+0

Ein Byte-Array in .NET verweist direkt auf BINARY (oder VARBINARY) in T-SQL – RickNZ

+0

Dank @RickNZ - sehr geschätzt. – Chris

+1

Dank @Vinko für alle die Klärung - Ich mag das Sicherheitsmodell zu besitzen und genau zu verstehen, was wo geht und weiß, dass ich die Benutzerfreundlichkeit der Kennwörter jederzeit von ASP.NET portieren kann - ich bin dort gebissen worden Vor. Vielleicht fehlgeleitet, sicher nicht, dass ich ein Kontrollfreak oder so etwas bin;) – Chris

Verwandte Themen