Czy obliczanie skrótu MD5 jest mniej obciążające procesor niż SHA-1 lub SHA-2 na „standardowym” laptopie sprzętowym x86? Interesują mnie informacje ogólne, które nie dotyczą konkretnego chipa.
AKTUALIZACJA: W moim przypadku jestem zainteresowany obliczeniem skrótu pliku. Jeśli rozmiar pliku ma znaczenie, przyjmijmy 300 KB.
Odpowiedzi:
Tak, MD5 obciąża nieco mniej procesora. Na moim Intel x86 (Core2 Quad Q6600, 2,4 GHz, z jednym rdzeniem) otrzymuję to w trybie 32-bitowym:
a to w trybie 64-bitowym:
Liczby są podawane w megabajtach na sekundę dla „długich” wiadomości (tak jest w przypadku wiadomości dłuższych niż 8 kB). Dzieje się tak w przypadku sphlib , biblioteki implementacji funkcji skrótu w C (i Javie). Wszystkie implementacje pochodzą od tego samego autora (mnie) i zostały wykonane z porównywalnymi optymalizacjami; w ten sposób różnice prędkości można uznać za rzeczywiście nieodłączne dla funkcji.
Dla porównania, weźmy pod uwagę, że najnowszy dysk twardy będzie działał z prędkością około 100 MB / s, a wszystko, co znajdzie się poza USB, osiągnie wartość poniżej 60 MB / s. Mimo że SHA-256 wydaje się tutaj „wolny”, jest wystarczająco szybki do większości zastosowań.
Zwróć uwagę, że OpenSSL zawiera 32-bitową implementację SHA-512, która jest dość szybsza niż mój kod (ale nie tak szybka jak 64-bitowy SHA-512), ponieważ implementacja OpenSSL jest w asemblerze i używa rejestrów SSE2, co nie może być zrobione w zwykłym C. SHA-512 jest jedyną funkcją spośród tych czterech, która korzysta z implementacji SSE2.
Edycja: na tej stronie ( archiwum ) można znaleźć raport o szybkości wielu funkcji haszujących (kliknij link „Telechargez maintenant”). Raport jest w języku francuskim, ale w większości jest pełen tabel i liczb, a liczby są międzynarodowe. Zaimplementowane funkcje hashujące nie obejmują kandydatów SHA-3 (poza SHABALEM), ale pracuję nad tym.
źródło
Na moim MacBooku Air z 2012 roku (Intel Core i5-3427U, 2x 1,8 GHz, 2,8 GHz Turbo), SHA-1 jest nieco szybszy niż MD5 (używając OpenSSL w trybie 64-bitowym):
Aktualizacja: 10 miesięcy później z OS X 10.9, SHA-1 działa wolniej na tym samym komputerze:
Druga aktualizacja: w systemie OS X 10.10 prędkość SHA-1 powróciła do poziomu 10.8:
Trzecia aktualizacja: OS X 10.14 z LibreSSL jest dużo szybszy (nadal na tym samym komputerze). SHA-1 nadal wychodzi na wierzch:
źródło
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
I to z procesorem Intel (R) Core (TM) i7 920 @ 2,67 GHz
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.
źródło
openssl speed
robi, co jest pierwszym i najbardziej znaczącym testem porównawczym.MD5 również korzysta z użycia SSE2, sprawdź BarsWF, a następnie powiedz mi, że tak nie jest. Wystarczy trochę wiedzy na temat asemblera i możesz stworzyć własne procedury MD5 SSE2. Jednak w przypadku dużych ilości przepustowości występuje kompromis między szybkością podczas mieszania a czasem spędzonym na przestawianiu danych wejściowych, aby były zgodne z zastosowanymi instrukcjami SIMD.
źródło
sha1sum jest trochę szybszy na Power9 niż md5sum
źródło