Calcul CRC : Modbus CRC-16, CRC-32 et CRC-8 en ligne
Calculez le CRC-8, CRC-16 (Modbus, CCITT, XMODEM), CRC-32 ou CRC-64 d’un texte ou d’octets hexadécimaux, et identifiez l’algorithme d’un CRC attendu
Vos données restent chez vous. La conversion se fait dans le navigateur ; rien n'est envoyé à un serveur.
Cet outil a-t-il fait le travail ?
Merci, votre retour nous est bien parvenu.
Comment ça marche
Un CRC (contrôle de redondance cyclique) est une courte valeur de contrôle ajoutée à un bloc de données pour que le destinataire sache s’il a été altéré en route. Dès que vous interrogez un appareil en Modbus RTU, écrivez un protocole série ou comparez le CRC-32 d’un fichier à une valeur publiée, vous devez le calculer. Saisissez les octets à gauche en hexadécimal : pour « 01 03 00 00 00 0A » (lire 10 registres à partir de l’adresse 0 de l’esclave 1), le CRC-16/MODBUS vaut 0xCDC5 et il est transmis poids faible en premier, soit « C5 CD » ; l’outil affiche la trame complète « 01 03 00 00 00 0A C5 CD ». Les octets peuvent être séparés par des espaces, des virgules, des deux-points ou le préfixe 0x. Un texte est converti en octets UTF-8 ; « 123456789 » est l’entrée de test standard de tous les CRC et donne CBF43926 en CRC-32. Si vous ne connaissez pas l’algorithme, lisez le tableau « Tous » et saisissez la valeur dont vous disposez dans « CRC attendu ».
Cet outil est aussi connu sous le nom de calcul crc, calcul crc en ligne, calcul crc16 modbus, calcul crc32, calculateur crc, crc modbus, calcul crc8.
Qu'est-ce que CRC (contrôle de redondance cyclique) ?
Le CRC (Cyclic Redundancy Check) considère les données comme un long nombre binaire, le divise par un polynôme binaire fixe et conserve le reste comme valeur de contrôle. L’émetteur ajoute ce reste, le récepteur refait la division et compare : un seul bit modifié change le reste. Les CRC protègent les liaisons série (Modbus, CAN), les trames réseau (Ethernet) et les formats d’archive (ZIP, PNG). Ils existent sur 8, 16, 32 et 64 bits ; plus le CRC est large, plus une erreur a de chances d’être repérée.
Qu'est-ce que Polynôme et paramètres d’un CRC ?
Six valeurs définissent entièrement un algorithme CRC : width (nombre de bits), poly (le diviseur), init (valeur de départ du registre), refin (chaque octet d’entrée est-il traité bit de poids faible en premier), refout (le résultat est-il inversé bit à bit) et xorout (valeur combinée par XOR à la fin). Ce modèle a été décrit par Ross Williams, et le catalogue CRC de Greg Cook recense des centaines d’algorithmes sous cette forme. Si votre fiche technique donne ces six valeurs, saisissez-les telles quelles avec « Algorithme personnalisé ».
Quelle différence entre un CRC et une somme de contrôle ?
Une somme de contrôle simple additionne les octets ou les combine par XOR : deux octets permutés ou deux erreurs qui s’annulent passent inaperçus. Un CRC est une division polynomiale où la position de chaque bit compte : il détecte toujours une erreur sur un bit et toute rafale d’erreurs ne dépassant pas sa largeur, et repère des octets permutés avec une très forte probabilité. C’est pourquoi Modbus, Ethernet et ZIP utilisent un CRC plutôt qu’une somme, tandis que NMEA (phrases GPS) et Intel HEX s’appuient encore sur une somme simple, que cet outil ne calcule pas.
Même nom, CRC différents : CCITT, Modbus et le piège de l’ordre des octets
« CRC-16 » ne désigne pas un calcul unique. CRC-16/CCITT-FALSE, XMODEM, KERMIT et X-25 utilisent tous le polynôme 0x1021, mais donnent 29B1, 31C3, 2189 et 906E pour « 123456789 ». La différence tient à la valeur initiale (FFFF ou 0000), au sens de lecture des bits de chaque octet (réflexion) et au XOR final. Modbus utilise le polynôme 0x8005 avec une valeur initiale FFFF et des bits réfléchis. Si la fiche technique indique seulement « CRC-16 », consultez le tableau « Tous » plutôt que de vous fier à une seule variante.
Deuxième piège : l’ordre des octets. Modbus RTU envoie d’abord l’octet de poids faible du CRC : le calcul donne 0xCDC5, mais la ligne transporte « C5 CD ». Si vous recopiez ces deux octets depuis une capture et cherchez « C5CD », rien ne correspond. C’est pourquoi chaque résultat affiche les deux ordres et la valeur attendue est aussi essayée octets inversés, avec la mention correspondante. En texte, la fin de ligne compte aussi : Windows termine une ligne par deux octets (0D 0A), Linux par un seul (0A), et un octet de plus change entièrement le CRC.
Quel algorithme choisir ?
C’est le protocole ou le format de fichier qui impose l’algorithme : faites la correspondance au lieu de deviner. Si la documentation fournit un tableau de paramètres (polynôme, valeur initiale, réflexion, XOR final), saisissez-les tels quels avec « Algorithme personnalisé ».
- Modbus RTU (automates, compteurs d’énergie, variateurs) : CRC-16/MODBUS
- Transferts XMODEM/YMODEM et de nombreux chargeurs d’amorçage : CRC-16/XMODEM
- La fiche indique « CRC-16-CCITT, valeur initiale 0xFFFF » : CRC-16/CCITT-FALSE (IBM-3740)
- ZIP, PNG, gzip et Ethernet : CRC-32 (ISO-HDLC)
- ext4, Btrfs, iSCSI et l’instruction SSE4.2 : CRC-32C
- Capteurs 1-Wire Dallas/Maxim (DS18B20) : CRC-8/MAXIM
- Archives XZ : CRC-64/XZ
Questions fréquentes
Comment calculer le CRC Modbus ?
Modbus RTU utilise le CRC-16/MODBUS : polynôme 0x8005 (0xA001 réfléchi), valeur initiale 0xFFFF, bits réfléchis, sans XOR final. Saisissez l’adresse, le code fonction et les données en hexadécimal ; le résultat est ajouté à la trame poids faible en premier. Pour « 01 03 00 00 00 0A », le CRC vaut 0xCDC5 et la trame envoyée est « 01 03 00 00 00 0A C5 CD ».
Quelle différence entre CRC-16 CCITT et XMODEM ?
Les deux utilisent le polynôme 0x1021 ; CRC-16/CCITT-FALSE part de 0xFFFF et XMODEM de 0x0000. Les mêmes données donnent donc des valeurs différentes : 29B1 contre 31C3 pour « 123456789 ». Choisissez selon la valeur initiale indiquée dans votre documentation, ou comparez les deux avec une trame connue.
Comment savoir quel algorithme a produit mon CRC ?
Prenez une trame connue (données + CRC), mettez les octets de données à gauche et le CRC dans « CRC attendu », puis laissez l’algorithme sur « Tous ». La ligne qui donne la valeur est marquée comme correspondance ; une valeur écrite octets inversés est signalée à part. Si rien ne correspond, vérifiez que les octets du CRC ne font pas partie de l’entrée et que les données sont identiques octet par octet.
Le CRC-32 est-il équivalent à MD5 ou SHA-256 ?
Non. Le CRC-32 est une valeur de contrôle rapide destinée à détecter les altérations accidentelles lors d’un transfert ou d’un stockage ; il ne protège pas contre une modification volontaire, car il est facile de fabriquer d’autres données ayant le même CRC. Pour prouver qu’un fichier n’a pas été modifié, utilisez une empreinte cryptographique comme SHA-256.