Prüfsummen für kleine Daten

Hallo,
Ich versende kleine Zahlen in der Größe von 2 Byte. Ich möchte
überprüfen, ob diese korrekt übertragen wurden.Nun gibt es ja
Prüfsummen aber z.B CRC erzeugt einen 4Byte großen Wert und MD5 schon
16Byte große Prüfsummen.Gibt es vielleicht eine Möglichkeit kleine
Prüfsummen für meine 2Byte großen Zahlen zu berechnen?Lässt sich z.B
CRC so modifizieren,dass der Algorithmus für meine 2Byte große Zahl
einen 4Bit großen Wert als Prüfwert berechnet?Oder könnt ihr mir
alternative Prüfsummenalgorithmen für diesen Zweck empfehlen?

Viele Grüße und vielen Dank

Inforamtics

4bit ist wohl nicht sinnvoll (ein Prüfalgorithmus soll ja verschiedene Bedingungen erfüllen bezüglich Erkennung von 1, 2 usw. Bit-Fehlern).

CRC-Algorithmen gibt es auch mit 1 oder 2 Byte Ergebnis, suche einfach nach CRC8 oder CRC16.

Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

CRC-Algorithmen gibt es auch mit 1 oder 2 Byte Ergebnis, suche
einfach nach CRC8 oder CRC16.

Reinhard

Es gibt auch CRC4 (Google).

Reinhard

Hallo,
Danke für die Antwort.

Es gibt auch CRC4 (Google).

Habe eben etwas gegoogled mit den Stichwörtern CRC4 Checksum und CRC
-4 Checksum.Habe aber nichts gefunden.Könntest du mir deine
Fundstellen posten?Könnte es sein,dass unter CRC4 das normalle CRC
mit 4Byte Prüfsumme verstanden wird?

Viele Grüße und vielen Dank

Informatics

Habe eben etwas gegoogled mit den Stichwörtern CRC4 Checksum
und CRC
-4 Checksum.Habe aber nichts gefunden.Könntest du mir deine
Fundstellen posten?Könnte es sein,dass unter CRC4 das normalle
CRC
mit 4Byte Prüfsumme verstanden wird?

Viele Grüße und vielen Dank

Informatics

Zitat:

CRC4

The Si bit may be used to transfer the CRC4 checksum. The four-bit checksum is transmitted in Si bits of eight subsequent frames. It is computed from 2048 bits of data sent in 8 previous frames. Such eight frame sequence is called a sub-multiframe (SMF). Every second SMF contains additional bits used to signal errors detected during the transmission. A sequence of two SMFs makes a full multiframe.

Gefunden bei: http://www.tahoe-group.com/g703.php

Das nützt vielleicht nicht direkt etwas, aber jedenfalls GIBT es CRC4.

Reinhard

hallo.

und wenn du einfach ein paritätsbit ranhängst? ist zwar nicht eben die sicherste methode, aber bevor du vier byte crc mit überträgst… dann würd ich lieber dreimal die zwei byte senden und mir die ganze berechnung sparen.

gruß

michael

Hallo Informatics

verschiedene CRCs wurden ja schon genannt.

Üblich sind auch sogenannte Längsparitäten, also z.B. alle Bytes (2 in Deinem Fall) XOR verknüpft. Das ist für einen µController fast 0 Rechenaufwand.

Leider hilft solch ein einfacher Algorithmus nicht bei Byte-Vertauschungen. Das ist aber bei 2 Byte-Zahlen beliebt, wegen unterschiedlicher Darstellung der Zahlen auf unterschiedlichen Prozessoren ( Big- oder Little-endian, also ob zuerst das high-, dann das lowbyte kommt, oder umgekehrt.)

Eine mögliche einfache Checksumme: (check = checksumme, d = datenbytes)

#define Startwert = 0x8f // beliebiger Startwert, aber 0 ist zu „einfach“, da es auch das Endergebnis wird.

check = Startwert;
while(neue Daten)
{
check [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,
Danke für eure Anworten.CRC4 ist interessant.

Viele Grüße

Informatics