OpenSSL-Hashfunktion zum Generieren eines AES-Schlüssels
21092
mk12
Welche Hash-Funktion verwendet OpenSSL, um einen Schlüssel für AES-256 zu generieren? Ich kann es nirgendwo in ihrer Dokumentation finden.
$ touch file $ openssl aes-256-cbc -nosalt -P -in file enter aes-256-cbc encryption password: (I type "a" and hit enter) Verifying - enter aes-256-cbc encryption password: (I type "a" and hit enter) key=0CC175B9C0F1B6A831C399E269772661CEC520EA51EA0A47E87295FA3245A605 iv =4FA92C5873672E20FB163A0BCB2BB4A4
Welcher Hash-Algorithmus generiert den ungesalzenen Hash nach key=der vorletzten Zeile für die Eingabe "a"?
Ziemlich sicher ist es ein SHA1-Digest-Algorithmus, aber ehrlich gesagt kann ich es nicht mit hundertprozentiger Sicherheit sagen.
Und wer hätte gedacht, dass etwas, das die Unauffälligkeit erhöhen soll, stumpfe Anweisungen hätte;)
BEARBEITEN: Dies ist unter Umständen nicht hilfreich, aber ich denke, Sie könnten es immer wissen
openssl enc -d -a -md sha1 -aes-256-cbc -nosalt -p
Ich habe festgestellt, dass standardmäßig MD5 verwendet wird. Wenn ich Ihren Befehl verwende (Nebenanmerkung: Keine dieser Optionen ist auf der Magierseite dokumentiert ...) mit "md5" anstelle von "sha1", erhalte ich dieselben Ergebnisse wie ich ursprünglich gepostet. Die Frage ist, wie bekommt man 256 Bit von MD5 (ein 128-Bit-Hash-Algorithmus)?
mk12 vor 12 Jahren
0
Eine Möglichkeit besteht darin, zwei unterschiedliche MD5s in binärer Form zu verketten, was zu einem echten 256-Bit-Schlüssel führt. Es gibt auch einige andere Methoden dafür. Sie könnten das PHP-Paket "md5_base64" auschecken. Auch wenn Sie kein Php-Typ sind, sind die Dokumente ziemlich informativ.
Snesticle vor 12 Jahren
0
Beachten Sie, dass die MD5s von 'key.128.tmp' und 'key.256.tmp' zusammengefügt den gleichen Schlüssel bilden wie die Ausgabe beim ersten Befehl.
Und wenn Sie eine dritte Iteration durchführen, erhalten Sie die IV. Dieser Fall ist praktisch, da die Schlüssel- und Datengröße = IV (256 und 128 Bit) beide genau ein Vielfaches der Hash-Ausgabe sind. Im Allgemeinen verketten Sie die Hash-Ausgaben und nehmen die ersten K-Bits für den Schlüssel und die nächsten D-Bits für die IV.
dave_thompson_085 vor 9 Jahren
0
Update: Der Standardwert war bisher md5. Seit 1.1.0 in 2016 ist es sha256. Vollständige Details unter https://crypto.stackexchange.com/questions/3298/is-there-a-standard-for-openssl-interoperable-aes-encryption
dave_thompson_085 vor 6 Jahren
0
Der Artikel enthält sehr einfachen Quellcode, der:
ermöglicht das Ver- und Entschlüsseln von Dateien oder Strings mit den OpenSSL-Algorithmen AES-256-CBC Cipher und SHA1 Digest. Es ist mit dem Befehlszeilentools openssl interoperabel und daher eine gute Einführung in die Verwendung von OpenSSL für Chiffren.
1
Fran
Ich kenne die Antwort nicht, aber Sie könnten sie im OpenSSL-Quellcode leicht genug finden .
"Leicht genug" - Die "Haupt" -Funktion (in der die Kennwort-Abfragefunktion lebt) ist ~ 500 Zeilen lang und mit "goto`s" übersät.
mk12 vor 12 Jahren
2
Beeindruckend. Ich habe mir nur den Quellcode angesehen. Es ist praktisch unlesbar. Keine Kommentare. Ein-Buchstaben-Variablennamen Pfui. Es tut mir leid, dass ich das vorgeschlagen habe.
Fran vor 12 Jahren
5