Wie funktioniert der CRC-check gegen 0

OP #1481038
Hi. Ich habe folgendes Problem. Und zwar möchte ich zur Datensicherheit 
innerhalb eines CAN-Netzwerkes eine zusätzliche CRC einfügen. Zur 
Generierung der CRC verwende ich folgenden Algorithmus:

static uint16 get_crc(uint8 *bufp, uint32 buflen, uint32 polynom)
{
    uint32 crc;
    int n;


    crc = 0;
    for ( ; buflen > 0; buflen--, bufp++)
    {
        crc += (uint32)(*bufp << 16);

        for (n=0; n<8; n++)
        {
            if (crc & 0x00000001)
            {
                crc ^= polynom;
            }
            crc >>= 1;
        }
    }
    return ((uint16)crc);
}

Wie kann ich denn jetzt, quasi am anderen Ende, testen, ob die CRC 
richtig ist. Gibt es da nicht einen Test gegen 0, bei dem mit Sicherheit 
gewährleistet ist, dass die übertragenen Daten konsitent sind? Irgendwie 
blick ich bei dem CRC generieren nicht so richtig durch.

MfG
#1481052
Davos Rit schrieb:
> Also berechnet der Empfänger ebenfalls eine CRC und zieht dann die
> empfangene davon ab und bei einem Ergebnis von 0 stimmen beide überein?

Du brauchst nichts abziehen.
Der CRC ist so konstruiert, dass der Empfänger ebenfalls seine CRC 
mitrechnet. Soweit stimmt es noch. Aber wenn er dann das CRC Byte 
empfängt und dieses CRC Byte in seine eigene Berechnung noch mit 
einfliessen lässt, dann kommt 0 raus.

Du schiebst einfach nur das Datenpaket (inklusive der gesendeten CRC) im 
Empfänger durch den CRC Algorithmus durch und das Ergebnis davon muss 0 
sein.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.