Frage

Ist es möglich, das Byte oder Bytes zu bestimmen, die sich von einer CRC16 -Berechnung geändert haben?

Angenommen, ich erhalte eine Konfigurationsdatei mit 780 Bytes, die den CRC16 als zwei Byte -Wert am Ende enthält (so wird der CRC16 basierend auf den ersten 778 Bytes berechnet). Wenn ich den CRC16 für die Dateiinhalte berechnet (die 778 Bytes, die den CRC16 am Ende nicht enthalten), kann ich den Byte -Offset feststellen, bei dem der Fehler aufgetreten ist?

War es hilfreich?

Lösung

Die kurze Antwort lautet nein, Sie können nicht.

Um zu verstehen, warum Sie verstehen müssen, wie der CRC berechnet wird und dass dies mathematisch als Hashing -Operation bezeichnet wird. Was es bedeutet, ist, dass die Ausgabe nicht zuverlässig vom generierten Hash -Code (in diesem Fall der CRC) zuverlässig rekonstruiert werden kann.

Es gibt statistische Analysemethoden, mit denen Sie einige Informationen über den Originaltext basierend auf bestimmten spezifischen Eingabe -Testfällen abschließen können, jedoch in den meisten Fällen, und zu einem naiven Beobachter gibt es nicht direkte Zuordnung zum ursprünglichen Text des CRC. Sofern der Originaltext also nicht auf eine bestimmte Weise konstruiert wurde, gibt es keine Möglichkeit, den Versatz zu wissen, bei dem in den meisten Fällen Daten geändert wurden.

Andere Tipps

Verwenden Sie nur die beiden Berechnungen des CRC16, Nr.

CRC16 ist nur eine Prüfsumme: Sie kann Ihnen sagen, dass es einen Unterschied gibt, aber nicht wo.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top