@immelnikoff
Изучаю БД

Во сколько раз вычислительная сложность алгоритма MD5 выше по сравнению с алгоритмом CRC32?

Или иначе, во сколько раз алгоритм MD5 медленнее алгоритма CRC32?
Я знаю, что MD5 – это алгоритм хэширования, а CRC32 – это алгоритм контрольной суммы для проверки целостности данных при передаче или записи.
Сейчас контроль целостности данных (фото по ~ 1МБ) при передаче в базу MySQL из 1С осуществляется с помощью алгоритма MD5 и есть подозрение, что избыточная вычислительная сложность алгоритма MD5 замедляет процесс передачи данных и нагружает процессор сервера. Мне нужно понять есть ли смысл MD5 заменить на CRC32 и каков будет выигрыш в производительности? Просто так экспериментировать не хочу, так как эта доработка стоит денег. Спасибо!
  • Вопрос задан
  • 713 просмотров
Решения вопроса 1
usdglander
@usdglander
Yipee-ki-yay
Во много!
Сами посудите, в CRC32 используется только модульная арифметика и сдвиговые операции в 32х битном регистре. Для того же MD5 тоже используются простые операции, но это происходит в четырёх 32х битных регистрах, в 32х циклах. Так что 4 * 32 = 128. Именно во столько раз MD5 медленнее CRC32.
И это только на вскидку, так как всех деталей реализации одного и другого алгоритма я не помню.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
В статье Hash Functions all the way down приводится сравнение функций хеширования с графиком.

Мне нужно понять есть ли смысл MD5 заменить на CRC32 и каков будет выигрыш в производительности?

Я сомневаюсь что именно вычисление MD5 является виновником замедления. Причину нужно искать в другом месте.
Используйте профилирование кода, обращений к СУБД и операции ввода/вывода.
Там еще очень возможна неэффективная работа с памятью из-за работы с фотографиями.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы