2010-07-28 3 views

ответ

24

CRC (Cyclic Redundancy Check) представляет собой тип checksum, конкретно положение зависит алгоритм контрольной суммы (в том числе, например, Fletcher's checksum, Adler-32). Как следует из их названия, они также обнаруживают позиционные изменения, что делает их более устойчивыми, что более широко используется, чем другие методы контрольной суммы.

+0

CRC совсем не прочный. Его позиционный характер делает его достойной проверкой целостности, но вы должны использовать криптографический хеш, как MD5, если вы можете позволить себе более высокие вычислительные затраты. Если вычисление не является проблемой, я рекомендую SHA256. См. Также [мой ответ] (https://stackoverflow.com/a/49115040/519360). –

+0

CRC не предназначены для противодействия столкновениям, а скорее для обнаружения передачи и других ошибок, таких как ошибки чтения. – zaph

12

CRC относится к определенному алгоритму контрольной суммы. Другие типы контрольных сумм - это XOR, модуль и все криптографические хеши.

10

Отъезд HowStuffWorks для хорошего описания и того, и того, как они отличаются.

На странице:

Циклические Redundancy Check (CRC)

CRCs аналогичны по своей концепции контрольных сумм, но они используют деление многочленов для определения значения CRC

Дополнительная информация приведена по ссылке выше, включая пример того, как рассчитывается контрольная сумма.

-1

Jeff Atwood (основатель Stack Overflow) написал в своем Checksums and Hashes блоге:

Я научился ценить алгоритм циклического избыточного кода (CRC) в моем 8-бит, 300 бод передачи файлов дней. Если CRC локального файла соответствует CRC, хранящемуся в файле (или на сервере), у меня была действительная загрузка. Я также немного узнал о pigeonhole principle, когда я загрузил файл с соответствующим CRC, который был поврежден!

 

A checksum является error-detection scheme, что, как правило, относится к криптографической хэш-функции, хотя он также включает в себя CRC. Вот три различных типа контрольной суммы:

Cyclic Redundancy Checks как CRC32 быстро, но столкновение склонных. Они не являются надежными для collision attacks, что означает, что кто-то может принять заданный CRC и легко ввести второй вход, который соответствует ему.

Cryptographic hash functions как MD5 (слабее), SHA1 (слабый), и SHA256 (сильный) специально разработаны, чтобы быть устойчивым к атакам столкновения. Они предпочтительнее CRC в любой ситуации, кроме скорости; используйте самый сильный алгоритм, который вы можете вычислить.

Key derivation functions как PBKDF2 и bcrypt предназначены для паролей. Это контрольные суммы, которые дорого вычисляются, чтобы они были надежными до brute-force attacks.

См. Также Crypto.SE question on CRC vs SHA1. В Википедии есть страница hash function security summary, в которой обсуждается вероятность столкновения различных криптографических хэшей.

+0

Давайте продолжим обсуждение в чате (https://chat.stackoverflow.com/rooms/166264/discussion-between-adam-katz-and-zaph). –

+0

Контрольные суммы не обязательно являются криптографическими хеш-функциями, они могут быть такими же простыми, как и арифметическая сумма байтовых значений. См. [Модульная сумма] (https://en.wikipedia.org/wiki/Checksum#Modular_sum) и в целом [Контрольная сумма] (https://en.wikipedia.org/wiki/Checksum). Возможно, вам нужно провести некоторые контрольные суммы WRT по исследованиям безопасности. – zaph

+0

@zaph - У меня было исправлено несколько изменений, и я также добавил вашу другую обратную связь, когда она вошла. Модульная сумма - действительно контрольная сумма. XOR нет. Как я отметил в чате, меня все еще интересует ваша конструктивная обратная связь и хотелось бы знать, как я мог бы превратить ваш -1 в +1. Давайте остановим обсуждение элементов, которые уже исправлены в моем ответе. –

Смежные вопросы