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
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 64257.97k 187370.26k 406435.07k 576544.43k 649827.67k
sha1 73225.75k 202701.20k 432679.68k 601140.57k 679900.50k
Und seine mit einer Intel (R) Core (TM) i7-CPU 920 bei 2,67 GHz
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 51859.12k 156255.78k 350252.00k 513141.73k 590701.52k
sha1 56492.56k 156300.76k 328688.76k 452450.92k 508625.68k
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.