Forum: Mikrocontroller und Digitale Elektronik Darf man ein Byteweises XOR als CRC bezeichnen?


von Skeith (Gast)


Lesenswert?

Hallo,

ich bin gerade dabei eine Kommunikation zwischen zwei µC zu realisieren. 
Als Prüfsumme möchte ich ein simples XOR verwenden und ein Byte hinten 
anhängen. Darf ich das ganze in der Dokumentation als CRC bezeichnen 
oder trifft das nur auf den aufwendigeren Algorithmus mit 
Generatorpolynom zu?

Viele Grüße
Skeith

von Karl H. (kbuchegg)


Lesenswert?

Das ist kein CRC

Das was du vorhast ist einfach nur eine Prüfsumme

Eine CRC ist eine spezielle Form einer Prüfsumme.
Aber nicht jede Prüfsumme ist eine CRC

Analogie

   Ein Fiat Panda ist ein Auto
   Ein 7-er BWM ist auch ein Auto

Du versuchst gerade einen Fiat Panda in deiner Doku als 7-er BWM zu 
verkaufen.

von Klaus W. (mfgkw)


Lesenswert?

Das erste C in CRC ist cyclic, und das fehlt bei XOR

von Hc Z. (mizch)


Lesenswert?

Ich würde „CRC“ für irreführend halten.  Es ist kein Cyclic Redundancy 
Check, sondern eine Parität.  Weshalb benötigst Du den Begriff?

von ... .. (docean) Benutzerseite


Lesenswert?

CRC arbeite normalerweise BIT Weise und mit einem Polynom, daher würde 
ich nein sagen.

Warum überhaupt? Damit es toll klingt? CRC in "richtig" ist auch nicht 
so schwierig...

von Skeith (Gast)


Lesenswert?

OK dann muss ich es doch nur Prüfsummer nennen. Soll für meine 
Diplomarbeit sein, daher muss es Formal schon passen.

@Karl Heinz
Anke für diesen anschaulichen Vergleich, hab es begriffen ;)

von Skeith (Gast)


Lesenswert?

...wobei der 7er ist dann doch eher ein MD5 oder SHA-1 :)

von Purzel H. (hacky)


Lesenswert?

Ein bytewises XOR ist ganz, ganz schlecht, denn eine gerade Anzahl Mal 
dasselbe bit falsch ergibt keinen Fehler. Dann besser eine Summe ueber 
alle Bytes ohne den Ueberlauf, dh modulo die highbytes.
Oder, wie schon hingewiesen wurde, ein CRC ist keine Hexerei.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Skeith schrieb:
> ...wobei der 7er ist dann doch eher ein MD5 oder SHA-1 :)

Warum, ist der so langsam? :-)

von Klaus W. (mfgkw)


Lesenswert?

Hey noch Was schrieb:
> Ein bytewises XOR ist ganz, ganz schlecht, denn eine gerade Anzahl Mal
> dasselbe bit falsch ergibt keinen Fehler. Dann besser eine Summe ueber
> alle Bytes ohne den Ueberlauf, dh modulo die highbytes.

Kommt das bei 2*n-fach gekipptem Bit nicht auch auf das Gleiche raus?

von MCUA (Gast)


Lesenswert?

aber auch ein 'richtiger' CRC ist nicht 100% sicher.

von Karl H. (kbuchegg)


Lesenswert?

MCUA schrieb:
> aber auch ein 'richtiger' CRC ist nicht 100% sicher.

Nichts ist 100% sicher.
Es ist nun mal nicht möglich x Bits auf y Bits einzudampfen ( y < x ), 
ohne das irgendetwas auf der Strecke bleibt. Und letzten Endes tut man 
das ja genau hier. Wenn es möglich wäre mittels einer Prüfsumme von 
jedem einzelnen Bit in allen Fällen exakt sagen zu können, ob es richtig 
ist, dann bräuchte man nur die Prüfsumme übertragen und der Empfänger 
könnte daraus die erzeugenden Bits korrekt rekonstruieren :-)

Die verschiedenen Prüfsummen-Verfahren unterscheiden sich letzten Endes 
nur darin, welche typischen Übertragungsfehler sie erkennen (bzw. 
korrigieren) können.

von (prx) A. K. (prx)


Lesenswert?

Klaus Wachtler schrieb:

> Das erste C in CRC ist cyclic, und das fehlt bei XOR

Wenn man man bös aufgelegt ist, dann kann man das als 8 parallele 1-Bit 
CRCs sehen - so betrachtet ist das durchaus zyklisch. ;-)

von Klaus W. (mfgkw)


Lesenswert?

So böse bin ich aber nicht.
Du?

(Ich hatte auch schon im Kopf, das Nicht-Shiften als Shiften um 0
Stellen zu verkaufen, um das C zu rechtfertigen, hatte es mir aber
dann doch verkniffen.
Dann kommst du mit sowas...)

von STK500-Besitzer (Gast)


Lesenswert?

>Wenn es möglich wäre mittels einer Prüfsumme von
>jedem einzelnen Bit in allen Fällen exakt sagen zu können, ob es richtig
>ist, dann bräuchte man nur die Prüfsumme übertragen und der Empfänger
>könnte daraus die erzeugenden Bits korrekt rekonstruieren :-)

Das DWIW-Modul neuerer AVR kann sowas ;)
SCNR

von MCUA (Gast)


Lesenswert?

>Die verschiedenen Prüfsummen-Verfahren unterscheiden sich letzten Endes
>nur darin,
..wieviel redundante Bits zu der eigentl. Nutz-Infornation hinzugefügt 
werden (und nach welchem Schema das geschicht). Und je mehr redund. Bits 
desto besser (sofern das Erzeugungs-Schema nicht zu billig ist).
Theoretisch gesehen wäre auch ein Parity-Bit eine CRC, nämlich eine CRC 
mit 1-Bit-Länge.

von Johnny B. (johnnyb)


Lesenswert?

Solch eine XOR-Operation als Prüfsumme zu bezeichnen ist aber irgendwie 
auch falsch, denn es ist ja nicht wirklich eine Summe von irgendwas.
Oder sehe ich das falsch?

von Karl H. (kbuchegg)


Lesenswert?

Jaein.

Der Begiff hat sich eingebürgert, auch dann wenn die Operation über alle 
Datenbytes Bytes streng genommen keine Addition ist.

   Prüfsumme = Funktion( Datenbytes )

Was genau die Operation ist, spielt dann wieder eniger eine Rolle. Der 
Begriff Summe drückt nur in einer gewissen Weise aus, dass alle Bytes 
beteiligt sind, so wie in

   Summe = Byte1 + Byte2 + Byte3 + Byte4 + ...

von Klaus W. (mfgkw)


Lesenswert?

Es ist insofern nicht weit von der Addition weg, als daß
XOR eine Addition ist, bei der alle Überträge weggworfen
werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.