Какой алгоритм хеширования требует больше времени: MD5 или SHA-256?

Вопрос или проблема

Какой хэш-алгоритм требует больше времени для вычисления: md5 или sha256?

Я не хочу использовать это по причинам безопасности, поэтому меня не интересует, какой из них более безопасен, я просто хочу узнать, какой из них требует меньше времени.

Это зависит от оборудования и программного обеспечения, которые вы используете. Ниже приведены результаты сравнения между MD5 и SHA с использованием библиотеки openssl на моем компьютере. Однако разные реализации, учитывающие аппаратное ускорение, дадут разные результаты. Современные процессоры имеют аппаратное ускорение для хэш-функций. У графических процессоров будут лучшие результаты, а специализированное оборудование существует для дальнейшего ускорения хэширования. Это особенно актуально для SHA, поскольку он используется для майнинга криптовалют.

$ openssl speed md5 sha1 sha256

type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md5              58318.02k   171878.31k   370689.37k   502232.78k   580493.45k
sha1             69045.26k   188431.38k   385979.53k   543316.53k   625854.82k
sha256           49638.66k   107537.27k   183872.51k   226793.47k   237228.26k

'Числа' указаны в 1000 байт в секунду, обработанных.

Обновление 2021 года с OpenSSL 1.1.1d: теперь мы видим, что md5 часто медленнее на новых процессорах, особенно для больших блоков:

## ПК i7-1165G7 @ 2.80GHz (2020)
OpenSSL 1.1.1d  10 сен 2019 / собран: Пн 7 дек  20:44:45 2020 UTC
type      16 bytes    64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
md5     189018.70k  418310.85k   712090.28k   890189.14k   956293.12k   962560.00k
sha1    287134.62k  746529.17k  1474064.38k  1973607.08k  2197842.60k  2192179.20k
sha256  222301.71k  603962.47k  1213340.33k  1665262.59k  1849016.32k  1847388.84k

## Сервер AMD EPYC 7571 (2018)
OpenSSL 1.1.1d  10 сен 2019 / собран: Пн 7 дек  20:44:45 2020 UTC
type      16 bytes    64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
md5      93668.33k  213979.18k   378971.56k   467472.38k   501205.67k   504064.68k
sha1    165020.82k  442991.72k   888443.48k  1188591.62k  1319236.95k  1330080.43k
sha256  142886.55k  375612.63k   791567.70k  1095950.34k  1234381.48k  1246827.86k

## Сервер E5-2682 v4 @ 2.50GHz (2016)
OpenSSL 1.1.1d  10 сен 2019 / собран: Пн 7 дек  20:44:45 2020 UTC
type      16 bytes    64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
md5     101505.24k  207422.92k   393158.83k   453332.99k   527085.34k   490711.72k
sha1     98091.83k  249828.79k   389640.36k   675694.25k   686966.33k   721021.61k
sha256   55421.86k  130103.33k   251929.17k   302571.86k   296977.81k   338439.56k

MD5 обычно известен как более быстрый, чем SHA256. Вы можете подтвердить это на этой странице, например.

OpenSSL, например, имеет встроенный набор для оценки производительности, так что вы можете сравнить сами, запустив:

$ openssl speed md5 
$ openssl speed sha256

Но, конечно, оборудование и программное обеспечение, которые вы используете для сравнения, могут повлиять на результаты. Вы можете увидеть результаты, которые получил этот пользователь на своих 32 и 64-битных системах, но я думаю, что эта таблица сравнения достаточно показательна, чтобы судить о том, что MD5 быстрее, чем SHA256.

Ответ или решение

Сравнение алгоритмов хеширования MD5 и SHA-256 показывает, что, в целом, MD5 работает быстрее, чем SHA-256. Это различие во времени вычисления обусловлено архитектурой самих алгоритмов: MD5 является более простым и менее сложным алгоритмом, что позволяет ему обрабатывать данные быстрее.

По приведённым тестам из различных источников, включая библиотеку OpenSSL, можно увидеть, что при различных размерах блоков данных MD5 обрабатывает их быстрее, чем SHA-256. Например, результаты тестирования на компьютерах с сучасными процессорами показывают, что MD5 может достигать значительно более высокой скорости обработки при хешировании данных по сравнению с SHA-256.

Однако стоит отметить, что производительность может варьироваться в зависимости от аппаратного обеспечения и программного обеспечения, используемого для тестирования. Некоторые современные процессоры поддерживают аппаратное ускорение для хеширования, что может улучшить производительность как для MD5, так и для SHA-256, хотя, как правило, MD5 остается быстрее.

В заключение, если ваша основная цель заключается только в вычислительной эффективности и не имеет значения безопасность, MD5, как правило, будет быстрее, чем SHA-256. Тем не менее, для задач, связанных с безопасностью, настоятельно рекомендуется использовать более надежные алгоритмы хеширования, такие как SHA-256 или лучшее, поскольку MD5 больше не считается безопасным.

Оцените материал
Добавить комментарий

Капча загружается...