CRC-32 de « 123456789 »
0xCBF43926 0xCBF43926 pour CRC-32/ISO-HDLC, la variante utilisée par ZIP, PNG, Ethernet et gzip.
Collez du texte ou de l'hexadécimal : les 63 variantes CRC-8, CRC-16 et CRC-32 d'un coup. Somme de contrôle impossible à reproduire ? Saisissez-la, l'outil nomme la variante : MODBUS, CCITT-FALSE, XMODEM. Tout reste local.
| Variante | Résultat | Poly | Init | RefIn/RefOut | XorOut |
|---|---|---|---|---|---|
| CRC-8 | |||||
| CRC-8/AUTOSAR | 0x2F | 0xFF | false / false | 0xFF | |
| CRC-8/BLUETOOTH | 0xA7 | 0x00 | true / true | 0x00 | |
| CRC-8/CDMA2000 | 0x9B | 0xFF | false / false | 0x00 | |
| CRC-8/DARC | 0x39 | 0x00 | true / true | 0x00 | |
| CRC-8/DVB-S2 | 0xD5 | 0x00 | false / false | 0x00 | |
| CRC-8/GSM-A | 0x1D | 0x00 | false / false | 0x00 | |
| CRC-8/GSM-B | 0x49 | 0x00 | false / false | 0xFF | |
| CRC-8/HITAG | 0x1D | 0xFF | false / false | 0x00 | |
| CRC-8/I-432-1 CRC-8/ITU | 0x07 | 0x00 | false / false | 0x55 | |
| CRC-8/I-CODE | 0x1D | 0xFD | false / false | 0x00 | |
| CRC-8/LTE | 0x9B | 0x00 | false / false | 0x00 | |
| CRC-8/MAXIM-DOW CRC-8/MAXIM · DOW-CRC | 0x31 | 0x00 | true / true | 0x00 | |
| CRC-8/MIFARE-MAD | 0x1D | 0xC7 | false / false | 0x00 | |
| CRC-8/NRSC-5 | 0x31 | 0xFF | false / false | 0x00 | |
| CRC-8/OPENSAFETY | 0x2F | 0x00 | false / false | 0x00 | |
| CRC-8/ROHC | 0x07 | 0xFF | true / true | 0x00 | |
| CRC-8/SAE-J1850 CRC-8/J1850 | 0x1D | 0xFF | false / false | 0xFF | |
| CRC-8/SMBUS CRC-8 | 0x07 | 0x00 | false / false | 0x00 | |
| CRC-8/TECH-3250 CRC-8/AES · CRC-8/EBU | 0x1D | 0xFF | true / true | 0x00 | |
| CRC-8/WCDMA | 0x9B | 0x00 | true / true | 0x00 | |
| CRC-16 | |||||
| CRC-16/ARC CRC-16 · CRC-16/IBM · CRC-16/LHA | 0x8005 | 0x0000 | true / true | 0x0000 | |
| CRC-16/CDMA2000 | 0xC867 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/CMS | 0x8005 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/DDS-110 | 0x8005 | 0x800D | false / false | 0x0000 | |
| CRC-16/DECT-R R-CRC-16 | 0x0589 | 0x0000 | false / false | 0x0001 | |
| CRC-16/DECT-X X-CRC-16 | 0x0589 | 0x0000 | false / false | 0x0000 | |
| CRC-16/DNP | 0x3D65 | 0x0000 | true / true | 0xFFFF | |
| CRC-16/EN-13757 | 0x3D65 | 0x0000 | false / false | 0xFFFF | |
| CRC-16/GENIBUS CRC-16/DARC · CRC-16/EPC · CRC-16/EPC-C1G2 · CRC-16/I-CODE | 0x1021 | 0xFFFF | false / false | 0xFFFF | |
| CRC-16/GSM | 0x1021 | 0x0000 | false / false | 0xFFFF | |
| CRC-16/IBM-3740 CRC-16/CCITT-FALSE · CRC-16/AUTOSAR | 0x1021 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/IBM-SDLC CRC-16/X-25 · CRC-16/X25 · CRC-16/ISO-HDLC · CRC-B · X-25 | 0x1021 | 0xFFFF | true / true | 0xFFFF | |
| CRC-16/ISO-IEC-14443-3-A CRC-A | 0x1021 | 0xC6C6 | true / true | 0x0000 | |
| CRC-16/KERMIT CRC-16/CCITT · CRC-16/CCITT-TRUE · CRC-16/V-41-LSB · CRC-CCITT | 0x1021 | 0x0000 | true / true | 0x0000 | |
| CRC-16/LJ1200 | 0x6F63 | 0x0000 | false / false | 0x0000 | |
| CRC-16/M17 | 0x5935 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/MAXIM-DOW CRC-16/MAXIM | 0x8005 | 0x0000 | true / true | 0xFFFF | |
| CRC-16/MCRF4XX | 0x1021 | 0xFFFF | true / true | 0x0000 | |
| CRC-16/MODBUS | 0x8005 | 0xFFFF | true / true | 0x0000 | |
| CRC-16/NRSC-5 | 0x080B | 0xFFFF | true / true | 0x0000 | |
| CRC-16/OPENSAFETY-A | 0x5935 | 0x0000 | false / false | 0x0000 | |
| CRC-16/OPENSAFETY-B | 0x755B | 0x0000 | false / false | 0x0000 | |
| CRC-16/PROFIBUS CRC-16/IEC-61158-2 | 0x1DCF | 0xFFFF | false / false | 0xFFFF | |
| CRC-16/RIELLO | 0x1021 | 0xB2AA | true / true | 0x0000 | |
| CRC-16/SPI-FUJITSU CRC-16/AUG-CCITT | 0x1021 | 0x1D0F | false / false | 0x0000 | |
| CRC-16/T10-DIF | 0x8BB7 | 0x0000 | false / false | 0x0000 | |
| CRC-16/TELEDISK | 0xA097 | 0x0000 | false / false | 0x0000 | |
| CRC-16/TMS37157 | 0x1021 | 0x89EC | true / true | 0x0000 | |
| CRC-16/UMTS CRC-16/BUYPASS · CRC-16/VERIFONE | 0x8005 | 0x0000 | false / false | 0x0000 | |
| CRC-16/USB | 0x8005 | 0xFFFF | true / true | 0xFFFF | |
| CRC-16/XMODEM CRC-16/ACORN · CRC-16/LTE · CRC-16/V-41-MSB · ZMODEM | 0x1021 | 0x0000 | false / false | 0x0000 | |
| CRC-32 | |||||
| CRC-32/AIXM CRC-32Q | 0x814141AB | 0x00000000 | false / false | 0x00000000 | |
| CRC-32/AUTOSAR | 0xF4ACFB13 | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/BASE91-D CRC-32D | 0xA833982B | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/BZIP2 CRC-32/AAL5 · CRC-32/DECT-B · B-CRC-32 | 0x04C11DB7 | 0xFFFFFFFF | false / false | 0xFFFFFFFF | |
| CRC-32/CD-ROM-EDC | 0x8001801B | 0x00000000 | true / true | 0x00000000 | |
| CRC-32/CKSUM CRC-32/POSIX | 0x04C11DB7 | 0x00000000 | false / false | 0xFFFFFFFF | |
| CRC-32/ISCSI CRC-32C · CRC-32/BASE91-C · CRC-32/CASTAGNOLI · CRC-32/INTERLAKEN | 0x1EDC6F41 | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/ISO-HDLC CRC-32 · CRC-32/ADCCP · CRC-32/V-42 · CRC-32/XZ · PKZIP | 0x04C11DB7 | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/JAMCRC | 0x04C11DB7 | 0xFFFFFFFF | true / true | 0x00000000 | |
| CRC-32/MEF | 0x741B8CD7 | 0xFFFFFFFF | true / true | 0x00000000 | |
| CRC-32/MPEG-2 | 0x04C11DB7 | 0xFFFFFFFF | false / false | 0x00000000 | |
| CRC-32/XFER | 0x000000AF | 0x00000000 | false / false | 0x00000000 | |
À utiliser quand votre appareil documente un polynôme absent du tableau ci-dessus.
Conçu et vérifié par l'équipe d'ingénierie Go Tools.
0xCBF43926 0xCBF43926 pour CRC-32/ISO-HDLC, la variante utilisée par ZIP, PNG, Ethernet et gzip.
0x4B37 0x4B37, avec poly 0x8005, init 0xFFFF, entrée et sortie réfléchies, pas de XOR final.
0x29B1 0x29B1. Son nom formel au catalogue est CRC-16/IBM-3740 : poly 0x1021, init 0xFFFF, aucune réflexion.
63 Ce calculateur couvre 63 variantes cataloguées : 20 de largeur 8, 31 de largeur 16 et 12 de largeur 32.
Un contrôle de redondance cyclique traite un bloc de données comme les coefficients d'un très long polynôme binaire, le divise par un polynôme générateur fixe en arithmétique modulo 2, et garde le reste. Ce reste est la somme de contrôle. La construction s'est imposée parce que la division se ramène à des décalages et des XOR, ce qui ne coûte presque rien en matériel, et parce que l'algèbre donne des garanties dures plutôt qu'un espoir statistique : un polynôme 16 bits bien choisi détecte toute erreur d'un seul bit, toute erreur de deux bits sur une longueur de bloc utile, tout nombre impair d'inversions de bits, et toute rafale d'au plus 16 bits consécutifs altérés.
Ce qui rend le CRC déroutant en pratique, c'est que le polynôme n'est qu'un paramètre sur six. Deux implémentations peuvent s'accorder sur le polynôme et diverger sur chaque résultat, parce qu'elles diffèrent par la valeur initiale du registre, par l'inversion ou non de l'ordre des bits en entrée et sur le registre de sortie, et par la constante appliquée en XOR à la fin. Une variante de CRC, c'est tout ce jeu de paramètres, pas le polynôme seul — d'où le fait qu'un nom comme « CRC-16 » n'identifie presque rien à lui seul, et que cette page affiche à côté de chaque résultat le polynôme, la valeur initiale, les deux drapeaux de réflexion et le XOR final, la largeur servant de titre de groupe.
Une réserve que le tableau ne peut pas montrer : un polynôme 16 bits ne détecte tout nombre impair d'inversions de bits que si x+1 le divise. C'est vrai des deux que vous rencontrerez le plus souvent, 0x1021 et 0x8005, mais pas de tous — CRC-16/T10-DIF et CRC-16/PROFIBUS font partie des exceptions.
// CRC-16/MODBUS: poly=0x8005, init=0xFFFF, refin/refout=true, xorout=0x0000
// Written in the reflected form, so the polynomial appears bit-reversed as 0xA001.
function crc16Modbus(bytes) {
let crc = 0xffff;
for (const byte of bytes) {
crc ^= byte;
for (let i = 0; i < 8; i++) {
crc = crc & 1 ? (crc >>> 1) ^ 0xa001 : crc >>> 1;
}
}
return crc;
}
crc16Modbus([0x01, 0x03, 0x00, 0x00, 0x00, 0x0a]); // 0xCDC5
// On the wire Modbus RTU sends the low byte first: ... 0x0A 0xC5 0xCD CRC-8, CRC-16 et CRC-32 se recalculent ensemble à mesure que vous tapez. Aucun menu déroulant à deviner avant de voir quoi que ce soit.
Saisissez la somme de contrôle qu'on vous a donnée et les variantes qui la produisent sont mises en évidence : identifier un algorithme inconnu prend une étape au lieu de vingt.
Chaque ligne indique le nom du catalogue RevEng et les alias employés sur le terrain — CCITT-FALSE, CRC-16/IBM, CRC-32C, X-25 et les autres.
Polynôme, valeur initiale, les deux indicateurs de réflexion et le XOR final figurent à côté de chaque résultat, de quoi vérifier une correspondance face à une spécification.
Largeur, polynôme, init, réflexion et XOR final sont tous modifiables, pour les polynômes qui ne sont jamais entrés dans un catalogue.
Le calcul a lieu dans votre navigateur. Les trames de production et les images de firmware ne quittent jamais la machine.
123456789
CRC-32/ISO-HDLC = 0xCBF43926, CRC-16/MODBUS = 0x4B37, CRC-8/SMBUS = 0xF4
Chaque variante de CRC du catalogue RevEng publie son résultat pour la chaîne ASCII 123456789. Cette entrée fait donc office d'autotest de référence : si une bibliothèque contredit le tableau de cette page, c'est la bibliothèque qui a tort.
01 03 00 00 00 0A
CRC-16/MODBUS = 0xCDC5
Lecture des registres de maintien de l'esclave 1. Modbus RTU émet l'octet de poids faible du CRC en premier : sur le bus, la trame circule donc sous la forme 01 03 00 00 00 0A C5 CD — une inversion qui explique une bonne part des sommes de contrôle que personne n'arrive à retrouver.
DEADBEEF
MODBUS = 0xC19B, CCITT-FALSE = 0x4097, XMODEM = 0xC457, KERMIT = 0x1915
Lu en mode Hex, donc quatre octets et non les huit caractères de la chaîne. Les quatre variantes CRC-16 les plus connues en donnent des résultats complètement divergents. Rien n'est cassé : elles diffèrent par la valeur initiale, la réflexion et le XOR final, pas par leur exactitude.
123456789 avec la valeur attendue 0x29B1
CRC-16/IBM-3740 (votre manuel l'appelle sans doute CRC-16/CCITT-FALSE)
C'est exactement le cas pour lequel ce calculateur est fait : vous avez les données et la somme de contrôle calculée par quelqu'un d'autre, mais pas le nom de la variante — alors vous cherchez le jeu de paramètres qui la reproduit.
Les trames de protocole sont presque toujours en hexadécimal. Le mode texte ne sert que si vous calculez la somme de contrôle d'une chaîne littérale, comme la valeur d'autotest 123456789.
En mode hexadécimal les séparateurs sont ignorés : 01 03 00 00 00 0A, 0x01 0x03 et 010300 00000A sont tous acceptés.
Le tableau est regroupé par largeur. Les noms formels viennent du catalogue RevEng, avec en dessous les alias que le manuel de votre appareil emploie sans doute.
Si vous avez déjà une somme de contrôle et cherchez sa variante, saisissez-la dans le champ de valeur attendue et lisez la ligne mise en évidence.
Resté en mode texte, le calculateur traite les caractères ASCII de votre dump hexadécimal plutôt que les octets qu'il représente. Passez en mode Hex — le nombre d'octets affiché sous le sélecteur de mode vous dit quelle lecture a été faite.
Text mode, input "01 03" -> 5 bytes: 30 31 20 30 33
Hex mode, input "01 03" -> 2 bytes: 01 03
Modbus RTU transmet l'octet de poids faible du CRC en premier. Une trame qui se termine par C5 CD porte la somme de contrôle 0xCDC5, pas 0xC5CD.
expected 0xC5CD (bytes read in transmission order)
expected 0xCDC5 (bytes reassembled low-byte-first)
Le CRC couvre les octets qui le précèdent. Réinjecter la trame entière, suffixe compris, produit un résidu et non la somme de contrôle.
01 03 00 00 00 0A C5 CD <- trailer included
01 03 00 00 00 0A <- payload only
Le catalogue compte 31 variantes de 16 bits de large. Sans les cinq autres paramètres, ce nom ne restreint rien du tout.
spec says: "trailer is a CRC-16"
spec says: "CRC-16/MODBUS, poly 0x8005, init 0xFFFF, refin/refout true"
Outils de sécurité
Déchiffrez de l'AES en ligne — GCM/CBC/CTR, phrase secrète ou clé brute, détection automatique du format OpenSSL et CryptoJS « U2FsdGVkX1 ». 100 % dans le navigateur, les clés ne quittent jamais la page.
Outils de sécurité
Chiffrement AES en ligne gratuit — AES-128/192/256, GCM/CBC/CTR, phrase secrète (PBKDF2) ou clé brute. 100 % dans votre navigateur ; rien n'est envoyé.
Outils de sécurité
Générez et vérifiez des hachages bcrypt en ligne — coût ajustable, préfixes $2b$/$2a$/$2y$. 100 % dans votre navigateur ; mot de passe jamais envoyé.
Outils de sécurité
Générateur et vérificateur HMAC en ligne gratuit. Calculez HMAC-SHA256/SHA1/SHA384/SHA512 avec des clés en texte, hex ou Base64 et une sortie Hex/Base64/Base64URL. 100 % dans votre navigateur — les clés ne quittent jamais la page.
Outils de sécurité
Décodez des jetons JWT en ligne avec notre décodeur JWT gratuit. Inspectez en-tête, charge utile, signature, expiration et revendications. 100 % navigateur — votre jeton ne quitte jamais votre appareil. Sans inscription ni suivi.
Outils de sécurité
Générateur & encodeur JWT gratuit en ligne. Construisez l'en-tête et la charge utile, signez avec HS256, RS256 ou ES256 instantanément. 100 % navigateur — votre secret et votre clé ne quittent jamais votre appareil.