Джефф Этвуд (основатель Stack Overflow) написал в своем блоге Checksum and Hashes :
Я научился ценить значение алгоритма Cyclic Redundancy Check (CRC)в мои 8-битные, 300-бодные дни передачи файлов.Если CRC локального файла совпадает с CRC, хранящимся в файле (или на сервере), у меня была допустимая загрузка.Я также немного узнал о принципе pigeonhole , когда скачал файл с соответствующим CRC, который был поврежден!
A контрольная сумма - это схема обнаружения ошибок , которая обычно относится к криптографической хэш-функции, хотя она также включает CRC.Вот три различных типа контрольной суммы:
Циклические проверки на избыточность , такие как CRC32 , быстрые, но подверженные столкновениям.Они не устойчивы к атакам столкновений , что означает, что кто-то может взять данный CRC и легко второй вход, соответствующий ему.
Криптографические хеш-функции как MD5 (слабый), SHA1 (слабый) и SHA256 (сильный) специально разработаны для обеспечения устойчивости к атакам столкновений.Они предпочтительнее CRC в любой ситуации, кроме скорости;используйте самый надежный алгоритм, который вы можете себе позволить в вычислительном отношении.
Функции получения ключей подобно PBKDF2 и bcrypt предназначены для паролей,Это контрольные суммы, которые дорого вычислять, поэтому они устойчивы к атакам грубой силы .
См. Также этот Crypto.SE вопрос о CRC против SHA1 .В Википедии есть страница сводной информации о безопасности хеш-функций , на которой обсуждается вероятность столкновения различных криптографических хешей.