La elección de la longitud CRC versus tamaño del archivo es principalmente relevante en los casos en que uno es más probable que tenga una entrada que difiere de la entrada "corregir" por tres o menos bits que para tener un uno que es masivamente diferente. Dadas dos entradas que son enormemente diferentes, la posibilidad de una coincidencia falsa será aproximadamente 1/256 con la mayoría de las formas de valor de comprobación de 8 bits (incluido CRC), 1/65536 con la mayoría de las formas de valor de comprobación de 16 bits (incluido CRC) , etc. La ventaja de CRC proviene de su tratamiento de entradas que son muy similares.
Con un CRC de 8 bits cuyo polinomio genera dos períodos de longitud 128, la fracción de los errores de bit simple, doble o triple en un paquete más corto que el que no se detecta no será 1/256. ser cero Del mismo modo con un CRC de 16 bits del período 32768, usando paquetes de 32768 bits o menos.
Si los paquetes son más largos que el período CRC, sin embargo, un error de doble bit no se detectará si la distancia entre los bits erróneos es un múltiplo del período CRC. Si bien eso podría no parecer un escenario terriblemente probable, un CRC8 será algo peor en la captura de errores de doble bit en paquetes largos que en la captura de errores "paquete está totalmente codificado". Si los errores de doble bit son el segundo modo de falla más común (después de los errores de un solo bit), sería malo. Sin embargo, si algo que corrompe algunos datos puede corromper una gran parte, el comportamiento inferior de los CRC con errores de doble bit puede no ser un problema.
El ataque MD5 a finales de 2008 es un ejemplo de libro de texto del problema con un CRC que es demasiado uniforme o demasiado pequeño: http://www.win.tue.nl/hashclash/rogue-ca/ – bzlm
CRC no es un algoritmo hash. Es una forma de ver si un bit fue volteado inadvertidamente. No veo la conexión al enlace MD5. Voy a mirar de nuevo. – Robert
@bzlm MD5 no tiene nada que ver con eso. Los CRC no se resistirán a tales ataques en absoluto, sino que se utilizan para detectar errores aleatorios, no ataques maliciosos. – starblue