|
| |

VB.NET - Ein- und Umsteiger| SHA1 Hash - Arithmetischer Überlauf | |  | | Autor: Domsi | | Datum: 06.03.12 07:35 |
| Hi!
Eigentlich handelt es sich hier bei mir um eine Webanwendung, aber der Fehler betrifft jetzt ja nicht explizit ASP.NET.
Ich habe bisher die Passwörter der Benutzer mit MD5 gehasht und wollte nun die Passwörter mit SHA1 hashen. Ich habe das mit folgender Anleitung versucht:
http://www.aspheute.com/artikel/20040105.htm
Allerdings ist die für C#. Somit tritt bei mir ein Fehler beim Bitshifting auf, da ein Arithmetischer Überlauf entsteht. Soweit ich weiß kann man den bei C# einfach durch "unchecked" beheben, weshalb dem Autor dieser Überlauf relativ egal ist.
Wie kann ich bei mir diesen Überlauf ignorieren bzw. was muss ich machen damit es zu keinem Überlauf kommt?
Hier der gesamte VB.Net Code:
Imports System.Text
Imports System.Security.Cryptography
Namespace SHA1_class
''' <summary>
''' Class for generating and hashing passwords
''' </summary>
Public Class Password
Private _password As String
Private _salt As Integer
Public Sub New(ByVal strPassword As String, ByVal nSalt As Integer)
_password = strPassword
_salt = nSalt
End Sub
Public Shared Function CreateRandomPassword(ByVal PasswordLength As _
Integer) As String
Dim _allowedChars As String = _
"abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ23456789"
Dim randomBytes As Byte() = New Byte(PasswordLength - 1) {}
Dim rng As New RNGCryptoServiceProvider()
rng.GetBytes(randomBytes)
Dim chars As Char() = New Char(PasswordLength - 1) {}
Dim allowedCharCount As Integer = _allowedChars.Length
For i As Integer = 0 To PasswordLength - 1
chars(i) = _allowedChars(CInt(randomBytes(i)) Mod _
allowedCharCount)
Next
Return New String(chars)
End Function
Public Shared Function CreateRandomSalt() As Integer
Dim _saltBytes As Byte() = New Byte(4) {}
Dim rng As New RNGCryptoServiceProvider()
rng.GetBytes(_saltBytes)
Return ((CInt(_saltBytes(0)) << 24) + (CInt(_saltBytes(1)) << 16) + _
(CInt(_saltBytes(2)) << 8) + CInt(_saltBytes(3)))
End Function
Public Function ComputeSaltedHash() As String
' Create Byte array of password string
Dim encoder As New ASCIIEncoding()
Dim _secretBytes As Byte() = encoder.GetBytes(_password)
' Create a new salt
Dim _saltBytes As Byte() = New Byte(4) {}
_saltBytes(0) = CByte(_salt >> 24)
_saltBytes(1) = CByte(_salt >> 16)
_saltBytes(2) = CByte(_salt >> 8)
_saltBytes(3) = CByte(_salt)
' append the two arrays
Dim toHash As Byte() = New Byte(_secretBytes.Length + ( _
_saltBytes.Length - 1)) {}
Array.Copy(_secretBytes, 0, toHash, 0, _secretBytes.Length)
Array.Copy(_saltBytes, 0, toHash, _secretBytes.Length, _
_saltBytes.Length)
Dim sha1__1 As SHA1 = SHA1.Create()
Dim computedHash As Byte() = sha1__1.ComputeHash(toHash)
Return encoder.GetString(computedHash)
End Function
End Class
End NamespaceDer Fehler tritt in der ComputeSaltedHash() - Funktion auf:
Dim _saltBytes As Byte() = New Byte(4) {}
_saltBytes(0) = CByte(_salt >> 24)
_saltBytes(1) = CByte(_salt >> 16)
_saltBytes(2) = CByte(_salt >> 8)
_saltBytes(3) = CByte(_salt)LG,
Domsi |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
TOP! Unser Nr. 1 
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
| |
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|