Wybór długości CRC kontra format jest przede wszystkim istotne w przypadkach, gdy jeden jest bardziej prawdopodobne, że wejście, które różni się od „poprawny” wejście przez trzech lub mniejszej liczby bitów niż mieć jeden, który jest masowo inny. Biorąc pod uwagę dwa wejścia, które różnią się znacznie, możliwość fałszywego dopasowania będzie wynosić około 1/256 dla większości form 8-bitowej wartości kontrolnej (w tym CRC), 1/65536 dla większości form 16-bitowej wartości kontrolnej (w tym CRC) itp. Zaletą CRC jest jego przetwarzanie danych wejściowych, które są bardzo podobne.
W przypadku 8-bitowego CRC, którego wielomian generuje dwa okresy o długości 128, ułamek błędów pojedynczego, podwójnego lub potrójnego pakietu w pakiecie krótszym niż ten, który pozostaje niewykryty, nie będzie wynosił 1/256 - będzie być zero. Podobnie z 16-bitowym CRC okresu 32768, używając pakietów 32768 bitów lub mniej.
Jeśli jednak pakiety są dłuższe niż okres CRC, błąd podwójnego bitu pozostanie niewykryty, jeśli odległość między błędnymi bitami jest wielokrotnością okresu CRC. Chociaż może się to wydawać niezbyt prawdopodobnym scenariuszem, CRC8 będzie nieco gorszy w wychwytywaniu błędów podwójnych w długich pakietach, niż przy łapaniu błędów "pakiet jest całkowicie zakodowany". Jeśli błędy dwubitowe są drugim najczęstszym błędem (po błędach jednobitowych), byłoby to złe. Jeśli coś, co psuje niektóre dane, może zepsuć wiele z nich, jednak gorsze zachowanie CRC z błędami dwubitowymi może nie być problemem.
Atak MD5 pod koniec 2008 r. Jest podręcznikowym przykładem problemu z CRC, który jest zbyt jednolity lub zbyt mały: http://www.win.tue.nl/hashclash/rogue-ca/ – bzlm
CRC nie jest algorytm mieszający. Jest to sposób na sprawdzenie, czy trochę zostało przypadkowo odwrócone. Nie widzę połączenia z linkiem MD5. Przyjrzę się jeszcze raz. – Robert
@bzlm MD5 nie ma z tym nic wspólnego. CRC w ogóle nie opierają się takim atakom, służą do wykrywania przypadkowych błędów, a nie złośliwych ataków. – starblue