Во сколько раз вычислительная сложность алгоритма MD5 выше по сравнению с алгоритмом CRC32?
Или иначе, во сколько раз алгоритм MD5 медленнее алгоритма CRC32?
Я знаю, что MD5 – это алгоритм хэширования, а CRC32 – это алгоритм контрольной суммы для проверки целостности данных при передаче или записи.
Сейчас контроль целостности данных (фото по ~ 1МБ) при передаче в базу MySQL из 1С осуществляется с помощью алгоритма MD5 и есть подозрение, что избыточная вычислительная сложность алгоритма MD5 замедляет процесс передачи данных и нагружает процессор сервера. Мне нужно понять есть ли смысл MD5 заменить на CRC32 и каков будет выигрыш в производительности? Просто так экспериментировать не хочу, так как эта доработка стоит денег. Спасибо!
Во много!
Сами посудите, в CRC32 используется только модульная арифметика и сдвиговые операции в 32х битном регистре. Для того же MD5 тоже используются простые операции, но это происходит в четырёх 32х битных регистрах, в 32х циклах. Так что 4 * 32 = 128. Именно во столько раз MD5 медленнее CRC32.
И это только на вскидку, так как всех деталей реализации одного и другого алгоритма я не помню.