Prawdziwa odpowiedź brzmi: to zależy
Należy wziąć pod uwagę kilka czynników, najbardziej oczywiste to: procesor, na którym uruchamiasz te algorytmy i implementacja algorytmów.
Na przykład ja i mój przyjaciel używamy dokładnie tej samej wersji openssl i uzyskujemy nieco inne wyniki z różnymi procesorami Intel Core i7.
Mój test w pracy z procesorem Intel (R) Core (TM) i7-2600 @ 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
I to z procesorem Intel (R) Core (TM) i7 920 @ 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
Obaj używamy dokładnie tych samych plików binarnych OpenSSL 1.0.1j 15 października 2014 z oficjalnego pakietu ArchLinux.
Moim zdaniem z dodatkowym zabezpieczeniem sha1, projektanci cpu są bardziej skłonni do poprawy szybkości sha1 i więcej programistów będzie pracować nad optymalizacją algorytmu niż md5sum.
Myślę, że md5 nie będzie już kiedyś używane, ponieważ wygląda na to, że nie ma przewagi nad sha1. Przetestowałem również niektóre przypadki na prawdziwych plikach i wyniki były zawsze takie same w obu przypadkach (prawdopodobnie ograniczone przez I / O dysku).
md5sum dużego pliku 4,6 GB zajęło dokładnie tyle samo czasu co suma sha1 tego samego pliku, to samo dotyczy wielu małych plików (488 w tym samym katalogu). Przeprowadzałem testy kilkanaście razy i konsekwentnie uzyskiwały te same wyniki.
-
Byłoby bardzo interesujące zbadanie tego dalej. Sądzę, że jest kilku ekspertów, którzy mogą dostarczyć solidnej odpowiedzi na pytanie, dlaczego sha1 jest szybszy niż md5 na nowszych procesorach.