none
Passwort mit MD5 verschlüsseln, könnt ihr noch was anderes empfehlen? RRS feed

  • Frage

  • Hi zusammen, im Moment verschlüssel ich meine Passwörter folgendermaßen.
     Public Function DeCrypt(ByVal SourceText As String) As String
            Des.Key = HashMD5.ComputeHash(ASCIIEncoding.UTF8.GetBytes(Key))
            Des.Mode = CipherMode.ECB
            Dim desdencrypt As ICryptoTransform = Des.CreateDecryptor()
            Dim buff() As Byte = Convert.FromBase64String(SourceText)
            Return ASCIIEncoding.UTF8.GetString _
            (desdencrypt.TransformFinalBlock(buff, 0, buff.Length))
        End Function

    Könnt ihr noch was besseres empfehlen? Habe was von "salten" gelesen?
    Freitag, 21. September 2012 09:35

Antworten

Alle Antworten

  • Hi Thomas,

    hier mal ein Link von Microsoft zum verschlüsseln.

    Beim Salzen wird das Password um eine Zufällige Zeichenkette verlängert bevor der Hash generiert wird. Diese Zeichenkette wird zusätzlich im Gespeichert.

    Wenn der Benutzer beim nächsten mal sein Passwort eingibt wird es wider um die Zeichenkette ergänzt und der Hash wert dann mit dem gespeicherten verglichen.

    Das soll den Gebrauch von Rainbow Tabels verhindern und den Angriff mit Brutforce erschweren.

    MFG

    Björn

    Freitag, 21. September 2012 09:56
  • Hallo Thomas Klinger2,

    Wirst Du diese Dinge in hoher Frequenz wiederholt aufrufen, ohne den Schlüssel ändern?

    Schau Dir mal auch folgende Links an. Vielleicht können sie Dir weiterhelfen.

    Salt (Kryptologie) -- Salt: Wird üblicherweise bei der Password-Generierung verwendet.

    Textverschlüsselung per Rjindael

    Schau mal auf  CodeProject: All about Cryptography in .NET, da wird das ganze Thema Verschlüsselung recht gut erklärt. àRijndaelManaged - Rijndael algorithm, one of the Advanced Encryption Standard (AES) algorithms, was designed as a replacement for the DES algorithms. The key strength is stronger than DES and was designed to out perform DES. The key can vary in length from 128, 192, to 256 bits in length.“

    Rfc2898DeriveBytes Constructor (String, Byte[]) – schau Dir das Beispiel an …hier findest Du IV (Initialisierungsvektor: Wird im Prinzip bei allen Ciphermodes benötigt, die irgendeine Art von "Feedback" unterstützen. Das bedeutet das Ergebnis des vorherigen Verschlüsselungsvorgangs (eines Blocks!) fließt in die Verschlüsselung des folgenden Blocks mit ein. Da der 1. Block aber ja keinen "Vorgänger" hat, verwendet man hier den Initialization Vector. Der IV wird dann genau einmal verwendet, nämlich nur beim ersten Block. Bei Cipher Modes OHNE Feedback (z.B. ECB) wird ein IV nicht verwendet - weil er ja keinen Sinn macht.

    CFB

    ECB à „Generell sollte ein Blockchiffre nie im ECB-Modus betrieben werden, wenn mehr als ein Block verschlüsselt werden soll. Ein Vorteil von ECB besteht darin, dass auf einzelne verschlüsselte Elemente direkt zugegriffen werden kann, ohne andere verschlüsselte Teile berücksichtigen zu müssen.“

    Grüße,

    Robert


    Robert Breitenhofer, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 21. September 2012 14:04
    Moderator
  • Danke euch. Im Prinzip hatte ich ja schon sowas in der Art.
    Gruss
    Dienstag, 25. September 2012 19:08