Истинският отговор е: Зависи
Има няколко фактора, които трябва да имате предвид, като най-очевидните са: процесорът, на който изпълнявате тези алгоритми, и изпълнението на алгоритмите.
Например аз и приятелят ми изпълняваме една и съща версия на openssl и получаваме малко по-различни резултати с различен процесор Intel Core i7.
Моят тест по време на работа с процесор 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
И неговият с Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz
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
И двамата работим с абсолютно същите двоични файлове на OpenSSL 1.0.1j 15 октомври 2014 г. от официалния пакет на ArchLinux.
Моето мнение по този въпрос е, че с добавената сигурност на sha1 е по-вероятно дизайнерите на процесора да подобрят скоростта на sha1 и повече програмисти ще работят върху оптимизирането на алгоритъма, отколкото md5sum.
Предполагам, че md5 вече няма да се използва някой ден, тъй като изглежда, че няма предимство пред sha1. Също така тествах някои случаи върху реални файлове и резултатите винаги бяха еднакви и в двата случая (вероятно ограничени от I/O на диска).
md5sum на голям файл от 4,6 GB отне точно същото време като sha1sum на същия файл, същото важи и за много малки файлове (488 в същата директория). Проведох тестовете десетина пъти и те постоянно получаваха едни и същи резултати.
--
Би било много интересно да проучим това допълнително. Предполагам, че има някои експерти наоколо, които биха могли да дадат солиден отговор защо sha1 става по-бърз от md5 на по-новите процесори.
person
Johnride
schedule
31.10.2014