Gast
#6821818
Hallo, ich muss zugeben, ich habe gestern Abend über CRC sinniert und bin an ein gedankliches Problem gestoßen, dass sich auch über nacht noch nicht verflüchtigt hat. Und zwar geht es mir um die praktische Implementierung einer bitweisen CRC: Wenn ich eine CRC mit einem Polynom (n+1)-ten Grades händisch berechne, dann hänge ich n Nullen an meine Nachricht an und arbeite mich fleißig mit der Polynomdivision durch. Der Rest am Ende ist meine CRC, die ich an die Nachricht hängen kann. Der Empfänger kann nun mit dem selben Algorithmus, ohne die Nachricht mit Nullen aufzufüllen dasselbe tun und schauen, ob das Ergebnis null ist. Die hardwareseitige Implementierung mittels eines Schieberegisters und den rückgekoppelten XOR zweigen ist soweit klar. Allerdings habe ich auch bei dieser Hardware-Implementierung die Eigenschaft, dass ich nach meiner Nachricht noch n Nullen hinterherschieben muss, bevor ich das CRC Ergebnis auslesen kann. Oraktische Implementierungen kenne ich als Anweder allerdings so, dass ich dieses Anhängen nicht machen muss, sondern einfach nur die m Nachrichten bits durchschaufeln muss und danach bekomme ich n CRC bits. Wenn ich danach alle m Nachrichtenbits + n CRC-bits durch den selben Algorithmus laufen lasse, ist bei einer validen CRC das Ergebnis dann 0. Ich muss also bei keiner Implementierung, die ich je benutzt habe, manuell zeischen der "Generierung" der CRC und der Prüfung unterscheiden, was aber bei einem LFSR, wie es in der Literatur beschrieben ist, notwendig ist, da beim "Generieren" nach nullen durchgeschoben werden müssen. Kann mir jemand da gedanklich auf die Sprünge helfen? Vielen Dank