araç köşesi

CRC berechnen: Modbus CRC-16, CRC-32 und CRC-8 online

CRC-8, CRC-16 (Modbus, CCITT, XMODEM), CRC-32 oder CRC-64 von Text oder Hex-Bytes berechnen und herausfinden, welcher Algorithmus eine erwartete CRC ergibt

Ihre Daten bleiben bei Ihnen. Die Umwandlung läuft im Browser; nichts wird an einen Server gesendet.

So funktioniert es

Eine CRC (zyklische Redundanzprüfung) ist ein kurzer Prüfwert, der an einen Datenblock angehängt wird, damit der Empfänger erkennt, ob die Daten unterwegs verfälscht wurden. Wer ein Gerät über Modbus RTU anspricht, ein serielles Protokoll programmiert oder die CRC-32 einer Datei mit einem veröffentlichten Wert vergleicht, muss sie berechnen. Geben Sie die Bytes links als Hex ein: Für „01 03 00 00 00 0A“ (10 Register ab Adresse 0 von Gerät 1 lesen) ergibt CRC-16/MODBUS 0xCDC5, und auf der Leitung steht sie mit dem Low-Byte zuerst als „C5 CD“; das Werkzeug zeigt das vollständige Telegramm „01 03 00 00 00 0A C5 CD“. Bytes dürfen durch Leerzeichen, Kommas, Doppelpunkte oder das Präfix 0x getrennt sein. Text wird in UTF-8-Bytes umgewandelt; „123456789“ ist die Standard-Testeingabe jeder CRC und liefert bei CRC-32 den Wert CBF43926. Kennen Sie den Algorithmus nicht, lesen Sie die Tabelle „Alle“ und tragen den vorhandenen Wert unter „Erwartete CRC“ ein.

Dieses Werkzeug ist auch als crc berechnen, crc berechnen online, modbus crc berechnen, crc16 berechnen, crc32 berechnen, crc pruefsumme berechnen, crc rechner bekannt.

Was ist CRC (zyklische Redundanzprüfung)?

Bei der CRC (Cyclic Redundancy Check) werden die Daten als lange Binärzahl durch ein festes Binärpolynom geteilt; der Rest dient als Prüfwert. Der Sender hängt den Rest an, der Empfänger wiederholt die Division und vergleicht – schon ein gekipptes Bit verändert den Rest. CRCs sichern serielle Busse (Modbus, CAN), Netzwerkrahmen (Ethernet) und Archivformate (ZIP, PNG). Es gibt sie mit 8, 16, 32 und 64 Bit; je breiter, desto seltener rutscht ein Fehler durch.

Was ist Polynom und CRC-Parameter?

Sechs Werte beschreiben einen CRC-Algorithmus vollständig: width (Bitbreite), poly (Divisor), init (Startwert des Registers), refin (ob jedes Eingabebyte mit dem niederwertigsten Bit zuerst verarbeitet wird), refout (ob das Ergebnis bitweise gespiegelt wird) und xorout (Wert, der zum Schluss per XOR verknüpft wird). Das Modell stammt von Ross Williams; Greg Cooks CRC-Katalog führt Hunderte Algorithmen genau in dieser Form. Stehen diese sechs Werte im Datenblatt, geben Sie sie unverändert unter „Eigener Algorithmus“ ein.

Was ist der Unterschied zwischen CRC und Prüfsumme?

Eine einfache Prüfsumme addiert oder verknüpft die Bytes per XOR; zwei vertauschte Bytes oder zwei Fehler, die sich gegenseitig aufheben, bleiben unbemerkt. Eine CRC ist eine Polynomdivision, bei der die Position jedes Bits zählt: Sie erkennt jeden Einzelbitfehler und jeden Fehlerblock bis zu ihrer Breite sicher und vertauschte Bytes mit sehr hoher Wahrscheinlichkeit. Deshalb setzen Modbus, Ethernet und ZIP auf eine CRC statt auf eine Summe, während NMEA (GPS-Sätze) und Intel HEX weiterhin eine einfache Prüfsumme verwenden, die dieses Werkzeug nicht berechnet.

Gleicher Name, andere CRC: CCITT, Modbus und die Falle der Byte-Reihenfolge

„CRC-16“ ist keine eindeutige Rechnung. CRC-16/CCITT-FALSE, XMODEM, KERMIT und X-25 verwenden alle das Polynom 0x1021, liefern für „123456789“ aber 29B1, 31C3, 2189 und 906E. Der Unterschied liegt im Startwert (FFFF oder 0000), in der Bitreihenfolge pro Byte (Spiegelung) und im End-XOR. Modbus nutzt das Polynom 0x8005 mit Startwert FFFF und gespiegelten Bits. Steht im Datenblatt nur „CRC-16“, prüfen Sie die Tabelle „Alle“, statt einer einzelnen Variante zu vertrauen.

Die zweite Falle ist die Byte-Reihenfolge. Modbus RTU sendet das Low-Byte der CRC zuerst: Berechnet wird 0xCDC5, auf der Leitung erscheinen „C5 CD“. Wer die beiden Bytes aus einem Mitschnitt übernimmt und nach „C5CD“ sucht, findet keinen Treffer. Deshalb zeigt jedes Ergebnis beide Reihenfolgen, und der erwartete Wert wird zusätzlich mit vertauschten Bytes geprüft und als solcher gekennzeichnet. Bei Text zählt auch das Zeilenende: Windows beendet eine Zeile mit zwei Bytes (0D 0A), Linux mit einem (0A) – ein einziges Byte mehr ergibt eine völlig andere CRC.

Welchen Algorithmus sollten Sie wählen?

Protokoll oder Dateiformat legen den Algorithmus fest – ordnen Sie ihn zu, statt zu raten. Enthält die Dokumentation eine Parametertabelle (Polynom, Startwert, Spiegelung, End-XOR), übernehmen Sie die Werte genau mit „Eigener Algorithmus“.

  • Modbus RTU (SPS, Energiezähler, Umrichter): CRC-16/MODBUS
  • XMODEM/YMODEM-Übertragung und viele Bootloader: CRC-16/XMODEM
  • Im Datenblatt steht „CRC-16-CCITT, Startwert 0xFFFF“: CRC-16/CCITT-FALSE (IBM-3740)
  • ZIP, PNG, gzip und Ethernet: CRC-32 (ISO-HDLC)
  • ext4, Btrfs, iSCSI und der SSE4.2-Befehl: CRC-32C
  • Dallas/Maxim-1-Wire-Sensoren (DS18B20): CRC-8/MAXIM
  • XZ-Archive: CRC-64/XZ

Häufige Fragen

Wie berechnet man die Modbus-CRC?

Modbus RTU verwendet CRC-16/MODBUS: Polynom 0x8005 (gespiegelt 0xA001), Startwert 0xFFFF, gespiegelte Bits, kein End-XOR. Geben Sie Adresse, Funktionscode und Datenbytes als Hex ein; das Ergebnis wird mit dem Low-Byte zuerst an das Telegramm angehängt. Für „01 03 00 00 00 0A“ ist die CRC 0xCDC5, gesendet wird „01 03 00 00 00 0A C5 CD“.

Was ist der Unterschied zwischen CRC-16 CCITT und XMODEM?

Beide nutzen das Polynom 0x1021; CRC-16/CCITT-FALSE beginnt mit 0xFFFF, XMODEM mit 0x0000. Dieselben Daten ergeben daher unterschiedliche Werte: 29B1 gegenüber 31C3 für „123456789“. Entscheiden Sie nach dem Startwert in Ihrer Dokumentation oder vergleichen Sie beide mit einem bekannten Telegramm.

Wie finde ich heraus, welcher Algorithmus meine CRC erzeugt hat?

Nehmen Sie ein bekanntes Telegramm (Daten plus CRC), geben Sie die Datenbytes links und die CRC unter „Erwartete CRC“ ein und lassen Sie den Algorithmus auf „Alle“. Die passende Zeile wird als Treffer markiert, ein Wert mit vertauschten Bytes wird gesondert gemeldet. Passt nichts, darf die CRC selbst nicht in der Eingabe stehen und die Daten müssen Byte für Byte identisch sein.

Ist CRC-32 dasselbe wie MD5 oder SHA-256?

Nein. CRC-32 ist ein schneller Prüfwert gegen zufällige Fehler bei Übertragung und Speicherung; gegen absichtliche Änderungen schützt er nicht, denn andere Daten mit gleicher CRC lassen sich leicht erzeugen. Um zu belegen, dass eine Datei nicht manipuliert wurde, nutzen Sie einen kryptografischen Hash wie SHA-256.