Является ли вычисление хэша MD5 менее затратным для ЦП, чем SHA-1 или SHA-2 на «стандартном» оборудовании x86 ноутбука? Меня интересует общая информация, а не конкретная микросхема.
ОБНОВЛЕНИЕ: в моем случае меня интересует вычисление хэша файла. Если размер файла имеет значение, предположим, что это 300 КБ.
Ответы:
Да, MD5 несколько менее загружает процессор. На моем Intel x86 (Core2 Quad Q6600, 2,4 ГГц, с использованием одного ядра) я получаю это в 32-битном режиме:
и это в 64-битном режиме:
Цифры в мегабайтах в секунду для «длинного» сообщения (это то, что вы получаете для сообщений длиннее 8 кБ). Это относится к sphlib , библиотеке реализаций хэш-функций на C (и Java). Все реализации принадлежат одному автору (мне) и были сделаны с сопоставимыми усилиями по оптимизации; таким образом, различия в скорости можно рассматривать как действительно присущие функциям.
Для сравнения, примите во внимание, что последний жесткий диск будет работать со скоростью около 100 МБ / с, а все, что идет через USB, будет ниже 60 МБ / с. Хотя здесь SHA-256 кажется «медленным», он достаточно быстр для большинства целей.
Обратите внимание, что OpenSSL включает 32-битную реализацию SHA-512, которая намного быстрее, чем мой код (но не так быстро, как 64-битный SHA-512), потому что реализация OpenSSL находится в сборке и использует регистры SSE2, что не может выполняется на простом языке C. SHA-512 - единственная функция из этих четырех, которая выигрывает от реализации SSE2.
Изменить: на этой странице (в архиве ) можно найти отчет о скорости многих хеш-функций (нажмите на ссылку «Telechargez maintenant»). Отчет на французском языке, но в основном он полон таблиц и цифр, причем цифры являются международными. Реализованные хэш-функции не включают кандидатов SHA-3 (кроме SHABAL), но я над этим работаю.
источник
На моем MacBook Air 2012 года (Intel Core i5-3427U, 2x 1,8 ГГц, 2,8 ГГц Turbo) SHA-1 немного быстрее, чем MD5 (с использованием OpenSSL в 64-битном режиме):
Обновление: 10 месяцев спустя с OS X 10.9 SHA-1 на той же машине стал медленнее:
Второе обновление: в OS X 10.10 скорость SHA-1 вернулась к уровню 10.8:
Третье обновление: OS X 10.14 с LibreSSL намного быстрее (все еще на той же машине). SHA-1 по-прежнему лидирует:
источник
Настоящий ответ: это зависит от
Следует учитывать несколько факторов, наиболее очевидными из которых являются: процессор, на котором выполняются эти алгоритмы, и реализация алгоритмов.
Например, я и мой друг запускаем одну и ту же версию openssl и получаем немного разные результаты с разными процессорами Intel Core i7.
Мой тест на работе с процессором Intel (R) Core (TM) i7-2600 @ 3,40 ГГц
И его с процессором Intel (R) Core (TM) i7 920 @ 2,67 ГГц
Мы оба используем одни и те же двоичные файлы OpenSSL 1.0.1j 15 октября 2014 года из официального пакета ArchLinux.
Мое мнение по этому поводу состоит в том, что с дополнительной безопасностью sha1 разработчики процессоров с большей вероятностью улучшат скорость sha1, и над оптимизацией алгоритма будет работать больше программистов, чем md5sum.
Я предполагаю, что md5 когда-нибудь больше не будет использоваться, так как кажется, что он не имеет преимущества перед sha1. Я также тестировал некоторые случаи на реальных файлах, и результаты всегда были одинаковыми в обоих случаях (вероятно, ограничены дисковым вводом-выводом).
md5sum большого файла размером 4,6 ГБ занял то же время, что и sha1sum того же файла, то же самое происходит со многими маленькими файлами (488 в том же каталоге). Я проводил тесты десятки раз, и они неизменно получали одинаковые результаты.
-
Было бы очень интересно исследовать это дальше. Я думаю, что есть некоторые эксперты, которые могут дать твердый ответ на вопрос, почему sha1 становится быстрее, чем md5 на новых процессорах.
источник
openssl speed
делает, это первый и самый значимый тест.MD5 также выигрывает от использования SSE2, посмотрите BarsWF и скажите мне, что это не так. Все, что для этого потребуется, - это немного знаний ассемблера, и вы сможете создать свою собственную процедуру (ы) MD5 SSE2. Однако для больших объемов пропускной способности существует компромисс между скоростью во время хеширования, а не временем, затрачиваемым на перегруппировку входных данных, чтобы они были совместимы с используемыми инструкциями SIMD.
источник
sha1sum немного быстрее на Power9, чем md5sum
источник