Ist die Berechnung eines MD5-Hashs weniger CPU-intensiv als SHA-1 oder SHA-2 auf "Standard" -Laptop x86-Hardware? Ich interessiere mich für allgemeine Informationen, die nicht spezifisch für einen bestimmten Chip sind.
UPDATE: In meinem Fall bin ich daran interessiert, den Hash einer Datei zu berechnen. Wenn die Dateigröße eine Rolle spielt, nehmen wir die 300 KB an.
Antworten:
Ja, MD5 ist etwas weniger CPU-intensiv. Auf meinem Intel x86 (Core2 Quad Q6600, 2,4 GHz, mit einem Kern) erhalte ich dies im 32-Bit-Modus:
und das im 64-Bit-Modus:
Die Zahlen sind in Megabyte pro Sekunde für eine "lange" Nachricht angegeben (dies erhalten Sie für Nachrichten, die länger als 8 kB sind). Dies ist mit sphlib , einer Bibliothek von Hash-Funktionsimplementierungen in C (und Java). Alle Implementierungen stammen vom selben Autor (mir) und wurden mit vergleichbaren Optimierungsbemühungen durchgeführt. Somit können die Geschwindigkeitsunterschiede als wirklich funktionsintern angesehen werden.
Vergleichen Sie zum Vergleich, dass eine aktuelle Festplatte mit etwa 100 MB / s ausgeführt wird und alles über USB unter 60 MB / s liegt. Obwohl SHA-256 hier "langsam" erscheint, ist es für die meisten Zwecke schnell genug.
Beachten Sie, dass OpenSSL eine 32-Bit-Implementierung von SHA-512 enthält, die ziemlich schnell ist als mein Code (aber nicht so schnell wie die 64-Bit-SHA-512), da sich die OpenSSL-Implementierung in Assembly befindet und SSE2-Register verwendet, was nicht möglich ist SHA-512 ist die einzige Funktion unter den vier, die von einer SSE2-Implementierung profitiert.
Bearbeiten: Auf dieser Seite ( Archiv ) finden Sie einen Bericht über die Geschwindigkeit vieler Hash-Funktionen (klicken Sie auf den Link "Telechargez-Wartung"). Der Bericht ist auf Französisch, aber meistens voller Tabellen und Zahlen, und die Zahlen sind international. Die implementierten Hash-Funktionen enthalten nicht die SHA-3-Kandidaten (außer SHABAL), aber ich arbeite daran.
quelle
Auf meinem 2012 MacBook Air (Intel Core i5-3427U, 2x 1,8 GHz, 2,8 GHz Turbo) ist SHA-1 etwas schneller als MD5 (mit OpenSSL im 64-Bit-Modus):
Update: 10 Monate später wurde SHA-1 mit OS X 10.9 auf demselben Computer langsamer:
Zweites Update: Unter OS X 10.10 ist die SHA-1-Geschwindigkeit wieder auf 10.8:
Drittes Update: OS X 10.14 mit LibreSSL ist viel schneller (immer noch auf demselben Computer). SHA-1 hat immer noch die Nase vorn:
quelle
Die wirkliche Antwort lautet: Es kommt darauf an
Es sind einige Faktoren zu berücksichtigen, die offensichtlichsten sind: die CPU, auf der Sie diese Algorithmen ausführen, und die Implementierung der Algorithmen.
Zum Beispiel führen ich und mein Freund beide genau dieselbe openssl-Version aus und erzielen mit unterschiedlichen Intel Core i7-CPUs leicht unterschiedliche Ergebnisse.
Mein Test bei der Arbeit mit einer Intel (R) Core (TM) i7-2600-CPU bei 3,40 GHz
Und seine mit einer Intel (R) Core (TM) i7-CPU 920 bei 2,67 GHz
Wir führen beide genau die gleichen Binärdateien von OpenSSL 1.0.1j vom 15. Oktober 2014 aus dem offiziellen ArchLinux-Paket aus.
Meiner Meinung nach verbessern CPU-Designer mit der zusätzlichen Sicherheit von sha1 eher die Geschwindigkeit von sha1, und mehr Programmierer werden an der Optimierung des Algorithmus arbeiten als md5sum.
Ich denke, dass md5 eines Tages nicht mehr verwendet wird, da es anscheinend keinen Vorteil gegenüber sha1 hat. Ich habe auch einige Fälle an realen Dateien getestet und die Ergebnisse waren in beiden Fällen immer gleich (wahrscheinlich begrenzt durch Festplatten-E / A.).
md5sum einer großen 4,6-GB-Datei hat genau dieselbe Zeit benötigt wie sha1sum derselben Datei. Dies gilt auch für viele kleine Dateien (488 im selben Verzeichnis). Ich habe die Tests ein Dutzend Mal durchgeführt und sie haben durchweg die gleichen Ergebnisse erzielt.
- -
Es wäre sehr interessant, dies weiter zu untersuchen. Ich denke, es gibt einige Experten, die eine solide Antwort darauf geben könnten, warum sha1 auf neueren Prozessoren schneller als md5 wird.
quelle
openssl speed
macht das, was der erste und aussagekräftigste Benchmark ist.MD5 profitiert auch von der Verwendung von SSE2. Schauen Sie sich BarsWF an und sagen Sie mir, dass dies nicht der Fall ist. Alles was es braucht ist ein wenig Assembler-Wissen und Sie können Ihre eigenen MD5 SSE2-Routinen erstellen. Bei großen Durchsatzmengen gibt es jedoch einen Kompromiss zwischen der Geschwindigkeit beim Hashing und nicht der Zeit, die für die Neuanordnung der Eingabedaten aufgewendet wird, um mit den verwendeten SIMD-Anweisungen kompatibel zu sein.
quelle
sha1sum ist auf Power9 viel schneller als md5sum
quelle