Question

Est-il possible de déterminer l'octet ou les octets, qui ont changé d'un calcul CRC16?

Par exemple, dire que je reçois un fichier de configuration qui est de 780 octets qui comprend CRC16 comme une valeur de deux octets à la fin (de sorte que le CRC16 est calculé sur la base des 778 premiers octets). Lorsque je calcule CRC16 pour le contenu du fichier (778 octets qui ne comprennent pas CRC16 à la fin) et il est différent, puis-je déterminer l'octet de décalage l'erreur est survenue à?

Était-ce utile?

La solution

La réponse courte est non, vous ne pouvez pas.

Pour comprendre pourquoi vous devez comprendre comment le CRC est calculé et que mathématiquement que l'on appelle une opération de hachage. Ce que cela signifie est la sortie ne peut pas être reconstruit de manière fiable à partir du code de hachage généré (dans ce cas, le CRC).

Il existe des méthodes d'analyse statistique qui peuvent vous permettre de déduire des informations sur le texte original basé sur certains cas de test d'entrée de spécifiques, mais dans la plupart des cas, et à un observateur naïf il n'y a pas de retour de la cartographie directe au texte original de la CRC. Donc, à moins que le texte original a été construit d'une certaine manière il n'y a aucun moyen de savoir le décalage à laquelle les données ont été modifiées dans la plupart des cas.

Autres conseils

En utilisant seulement les deux calculs du CRC16, non.

CRC16 est juste une somme de contrôle. Il peut vous dire qu'il ya une différence, mais pas où

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top