Suma de comprobación CRC
En realidad, solo existe un núcleo del algoritmo CRC, que es la implementación de la división binaria. Hay tantas versiones por las siguientes razones:
La longitud del campo CRC<. /p>
Fórmula polinómica
Valor inicial
Si la salida está invertida horizontalmente
Si la entrada está invertida horizontalmente
El resultado es el mismo valor
p>
La mayoría de mis publicaciones solo analizan la longitud del campo CRC y la fórmula polinomial, pero no cubren los tres problemas restantes del algoritmo CRC.
La longitud del campo CRC. Cuanto más largo sea el campo, mejor será la suma de comprobación del algoritmo CRC. Si utilizamos la probabilidad de error para evaluar la capacidad de verificación, entonces la capacidad de verificación de un campo de longitud N es 1/2**N. Los símbolos utilizados aquí tienen su significado en el lenguaje Python.
En términos generales, tomamos principalmente longitudes de 8 bits, 16 bits y 32 bits. Por supuesto, hay algunos más exóticos como los de 4 bits, 5 bits, 6 bits y 7 bits.
Los polinomios son los divisores en nuestro algoritmo de polinomios binarios. Los diferentes algoritmos suelen utilizar diferentes polinomios.
El valor inicial es el valor inicial del campo CRC. Por lo general, selecciona entre 0 y todos los 1.
Entrada invertida. Cuando se ejecuta el método de operación específico, los datos de entrada se invierten horizontalmente en unidades de bytes. Por ejemplo, 01000001 cambia a 10000010.
Salida volteada. La operación de inversión de salida es la misma que la operación de inversión de entrada. Sólo el giro de salida voltea todo el campo CRC horizontalmente.
La probabilidad del resultado es un valor de datos utilizado como probabilidad del resultado del algoritmo anterior. Si el valor es 0, no se realiza ninguna diferenciación.
¿Por qué necesitamos estas categorías aparentemente desorganizadas? Cada algoritmo se prueba con datos diferentes. Para datos con diferentes características, como algunos datos, habrá una gran cantidad de ceros al principio. Si no se utilizan activadores de entrada o valores iniciales, estos ceros no tendrán ningún impacto en el resultado de la suma de verificación. Esto no es lo que queremos, queremos que el resultado corresponda a los datos uno a uno y sea único. Si no es único, entonces el resultado no tiene sentido. Por tanto, la razón principal por la que aparecen tantos algoritmos es para adaptarse a las características de diferentes cadenas de datos.
A continuación se muestran algunos ejemplos.
Sitio web de verificación: /crc.html