Unterschiede bei CRC16?

OP #5539573
Lesenswert?

Hey,

ich habe nun einen RFID reader (Datenblatt hier: 
http://www.chafon.com/DownLoadFile.aspx?fid=85) der eine CRC-16 
Pruefsumme erwartet. Da ich mit Riot OS arbeiten, habe ich bereits eine 
fertige Implementierung genommen. Siehe: 
https://riot-os.org/api/group__sys__checksum__crc16__ccitt.html und 
https://riot-os.org/api/group__sys__checksum__ucrc16.html

Nun habe ich aber das Ergebnis der beiden Implementierungen mit diesem 
Online-Tool und meinen Byte Array vergleich.
Das Array: 0x04 0x00 0x21
Ergebnis Online Tool: 0xE883

Nun, je nachdem welche implementierung ich waehle und Startwert komme 
ich auf andere Pruefsummen. Eigentlich sollte das ja nicht sein oder 
sehe ich das falsch?

Ich habe folgende Konfigurationen wie im Datenblatt verwendet:
#define PRESET_VALUE 0xFFFF
#define POLYNOMIAL  0x8408

Das Datenblatt beschreibt ausserdem folgende implementierung:
https://pastebin.com/MSezmVxC
Gast #5539586
Lesenswert?

> Nun, je nachdem welche implementierung ich waehle und Startwert komme
> ich auf andere Pruefsummen. Eigentlich sollte das ja nicht sein oder
> sehe ich das falsch?

Ja, das siehst Du falsch. Startwerte und Co. beeinflussen ∗natürlich∗ 
das Ergebnis.
Gast #5539741
Lesenswert?

Oder mit dem tool reveng (Kurzform für reverse engineering).
Das probiert per bruteforce alle Varianten durch, geht bei crc16 noch 
relativ schnell<1min. Du musst nur die Daten übergeben und wieviele bit 
davon die checksumme sind.
LG
Scyte

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren