Pregunta

¿Es posible determinar el byte, o bytes, que han cambiado de un cálculo de CRC16?

Por ejemplo, digamos que obtengo un archivo de configuración que es 780 bytes que incluye el CRC16 como un valor de dos bytes al final (por lo que el CRC16 se calcula en función de los primeros 778 bytes). Cuando calculo el CRC16 para el contenido del archivo (los 778 bytes que no incluyen el CRC16 al final) y es diferente, ¿puedo determinar el byte compensado en el que ocurrió el error?

¿Fue útil?

Solución

La respuesta corta es no, no puedes.

Para entender por qué tiene que entender cómo se calcula el CRC y que matemáticamente se llama operación de hash. Lo que significa es que la salida no se puede reconstruir de manera confiable del código hash generado (en este caso el CRC).

Existen métodos de análisis estadístico que pueden permitirle inferir información sobre el texto original en función de ciertos casos de prueba de entrada específicos, pero en la mayoría de los casos, y a un observador ingenuo no hay asignación directa al texto original del CRC. Entonces, a menos que el texto original se construyera de cierta manera, no hay forma de saber el desplazamiento al que se cambiaron los datos en la mayoría de los casos.

Otros consejos

Usando solo los dos cálculos del CRC16, no.

CRC16 es solo una suma de verificación: puede decirle que hay una diferencia, pero no dónde.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top