Generierung AES-256-bit-Schlüssel Wert
Kennt jemand eine Möglichkeit, um eine 256-bit-Schlüssel generierte Wert von einem pass phrase von jeder beliebigen Länge? Die Verschlüsselung kann nicht gesalzen werden, da die verschlüsselten Werte müssen neu generiert werden, verglichen und in der Datenbank. So einen Wert generieren muss, die die gleiche verschlüsselte Zeichenfolge jedes mal, wenn es verschlüsselt ist.
Derzeit bin ich mit einem 32-char key arbeiten an der möglicherweise falschen Annahme, dieser ist 256 bit?
So, ich würde wollen, dass 'the quick brown fox' umgewandelt werden, um einen geeigneten AES-256-bit-Schlüssel?
"Die Verschlüsselung kann nicht gesalzen werden, da die verschlüsselten Werte müssen neu generiert werden", Das ist, warum es Häufig zu speichern, das Salz zusammen mit dem Hash-Passwort. Dieser Weg, wenn zwei verschiedene Benutzer das gleiche Kennwort haben, es produziert verschiedene hashes, aber für einen einzelnen Benutzer das gleiche Passwort immer den gleichen hash.
um ehrlich zu sein, ohne Salz ist es wirklich nicht verschlüsselt ist überhaupt. Sollte es nicht möglich sein, eine direkte Datenbank-lookup gegen einen verschlüsselten Wert.
um ehrlich zu sein, ohne Salz ist es wirklich nicht verschlüsselt ist überhaupt. Sollte es nicht möglich sein, eine direkte Datenbank-lookup gegen einen verschlüsselten Wert.
InformationsquelleAutor bhs | 2013-06-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie konstruieren die
Rfc2898DeriveBytes Class
mit einer beliebigen Größe Kennwort und dann daraus einen Schlüssel der von Ihnen gewünschten Größe, in diesem Fall 256 bits (32 bytes):Werden, um zu einem deterministischen output (d.h. gleicher Eingabe die gleiche Ausgabe erzeugen), müssen Sie die hard-code, das Salz. Das Salz muss mindestens 8 Byte:
Rfc2898DeriveBytes
implementiert PBKDF2 🙂Danke - das war sehr hilfreich. Sollte keySize 32 wenn man ein 32-byte-Schlüssel-array ?
Ja, ich denke, das war ein bisschen ein Fehler von ByteBlast. Ich würde auch Ratschläge für die Codierung des Passwortes in bytes mit UTF-8-Codierung, da die Rfc2898DeriveBytes-Funktion nicht explizit die Kodierung, die es verwendet. Das ist schwierig, wenn man die Funktion aus einer anderen Laufzeit.
InformationsquelleAutor User 12345678
Wahrscheinlich der beste Weg ist die Verwendung von PBKDF2 mit SHA256 (welche generiert 256-bit-Ausgabe) und einen für die Anwendung spezifischen Salz - & iteration-count. Sie sollten sich bewusst sein, dass eine Anwendung bestimmte Salz entfernt eine ganze Menge Schutz von PBKDF2, so benötigen Sie möglicherweise einen zusätzlichen Schutz um dieses Problem zu lindern. Eine Methode wäre, um sicherzustellen, dass die Datenbank sicher ist, und dass eine maximale Anzahl von versuchen verwendet werden können.
Sind Sie richtig, die besagt, dass ein 32 char-passphrase ist nicht einer 256-bit-Schlüssel. Es enthält nicht genug Entropie, und einige bytes können nicht einmal gültige Charakter-Darstellungen.
Vielen Dank - so ein 32-byte-array aus der Methode oben ist mit einer 256-bit-Schlüssel ?
Es ist ein password based key derivation function, das ist, was PBKDF bedeutet. Setzen Sie ein Passwort, erhalten Sie einen Schlüssel zurück (als bytes). Es hat Schutz über eine Salz-und eine Anzahl von Iterationen, die macht es relativ schwer zu berechnen, den Schlüssel (für Sie und ein Angreifer). Ein Angreifer muss wahrscheinlich eine Menge tun, um von Ihnen zu bekommen, um die Schlüssel zu. Allerdings ist es am besten zu verwenden SHA-256 oder höher, weil es erfordert, um die volle Anzahl der Iterationen für alles, was über eine hash-Ausgabe - und dies ist wahrscheinlich nur Fehler, die Sie, nicht der Angreifer.
InformationsquelleAutor Maarten Bodewes
Zu Schlüssel generieren von Passwort-siehe meine Antwort unten
InformationsquelleAutor Minute V
//Hole den ersten 44 Zeichen für die AES-Schlüssel und die restlichen chars für AES IV
InformationsquelleAutor Minute V
Können Sie einige hash-Funktion, die bietet 256-bit-outuput aus einer Eingabe mit beliebiger Länge, z.B. SHA256.
InformationsquelleAutor alex