Справжня відповідь: Це залежить
Є кілька факторів, які слід врахувати, найбільш очевидними є: процесор, на якому ви запускаєте ці алгоритми, та реалізація алгоритмів.
Наприклад, я та мій друг запускаємо абсолютно таку ж версію openssl та отримуємо трохи інші результати при різних процесорах Intel Core i7.
Мій тест на роботі з процесорним процесором Intel (R) i7-2600 процесора @ 3,40 ГГц
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) i7 i7 CPU 920 при 2,67 ГГц
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. Я також перевіряв деякі випадки на реальних файлах, і результати завжди були однаковими в обох випадках (ймовірно, обмежені введенням / виведенням диска).
md5sum великого 4,6 ГБ файлу займав точно той же час, ніж sha1sum того ж файлу, те саме стосується багатьох малих файлів (488 в тій самій директорії). Я проходив тести десяток разів, і вони постійно отримували однакові результати.
-
Це було б дуже цікаво дослідити далі. Я думаю, що є деякі фахівці, які можуть дати чітку відповідь на те, чому sha1 стає швидше, ніж md5 на нових процесорах.