vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

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 Namespace
Der 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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
SHA1 Hash - Arithmetischer Überlauf1.480Domsi06.03.12 07:35
Re: SHA1 Hash - Arithmetischer Überlauf867ModeratorRalfE06.03.12 09:01
Re: SHA1 Hash - Arithmetischer Überlauf996ModeratorDaveS06.03.12 09:37
Re: SHA1 Hash - Arithmetischer Überlauf881Domsi06.03.12 15:05

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 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