CRC-32 van “123456789”
0xCBF43926 0xCBF43926 voor CRC-32/ISO-HDLC, de variant die ZIP, PNG, Ethernet en gzip gebruiken.
Plak hex of tekst en bereken in één keer alle 63 CRC-8-, CRC-16- en CRC-32-varianten. Checksum die niet klopt? Vul hem in en de tool benoemt de variant: MODBUS, CCITT-FALSE, XMODEM, KERMIT. Alles draait in je browser.
| Variant | Resultaat | 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 | |
Gebruik dit als je apparaat een polynoom documenteert die niet in de tabel hierboven staat.
Gebouwd en geverifieerd door het engineeringteam van Go Tools.
0xCBF43926 0xCBF43926 voor CRC-32/ISO-HDLC, de variant die ZIP, PNG, Ethernet en gzip gebruiken.
0x4B37 0x4B37, met poly 0x8005, init 0xFFFF, invoer en uitvoer gespiegeld, geen laatste XOR.
0x29B1 0x29B1. De formele naam in de catalogus is CRC-16/IBM-3740: poly 0x1021, init 0xFFFF, geen spiegeling.
63 Deze calculator dekt 63 varianten uit de catalogus: 20 met breedte 8, 31 met breedte 16 en 12 met breedte 32.
Een cyclische redundantiecontrole behandelt een blok data als de coëfficiënten van een heel lange binaire polynoom, deelt die met modulo-2-rekenwerk door een vaste generatorpolynoom en houdt de rest over. Die rest is de checksum, in het Nederlands ook wel de controlesom. De constructie is populair omdat de deling neerkomt op schuifoperaties en XOR-bewerkingen, wat in hardware vrijwel niets kost, en omdat de algebra harde garanties geeft in plaats van statistische hoop: een goed gekozen 16-bits polynoom detecteert elke enkelvoudige bitfout, elke dubbele bitfout binnen een bruikbare bloklengte, elk oneven aantal omgeklapte bits, en elke burst van 16 of minder opeenvolgende beschadigde bits.
Wat CRC in de praktijk verwarrend maakt, is dat de polynoom maar één van zes parameters is. Twee implementaties kunnen het eens zijn over de polynoom en toch over elk resultaat van mening verschillen, omdat ze verschillen in de startwaarde van het register, in de vraag of de bitvolgorde van de invoerbytes en van het uitvoerregister omgekeerd wordt, en in de constante die er aan het eind met XOR bij komt. Een CRC-variant is die hele parameterset en niet de polynoom alleen — daarom zegt een naam als “CRC-16” op zichzelf vrijwel niets, en daarom toont deze pagina naast elk resultaat de polynoom, de startwaarde, beide spiegelvlaggen en de laatste XOR, met de breedte als groepskop.
Eén kanttekening die de tabel niet kan tonen: een 16-bits polynoom detecteert elk oneven aantal omgeklapte bits alleen als x+1 er een deler van is. Dat geldt voor de twee die je het vaakst tegenkomt, 0x1021 en 0x8005, maar niet voor allemaal — CRC-16/T10-DIF en CRC-16/PROFIBUS horen bij de uitzonderingen.
// 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 en CRC-32 worden samen herberekend terwijl je typt. Geen keuzelijst waarin je eerst moet gokken voordat je iets te zien krijgt.
Typ de checksum die je hebt gekregen en de varianten die hem opleveren lichten op, zodat een onbekend algoritme identificeren één stap kost in plaats van twintig.
Elke rij toont de naam uit de RevEng-catalogus plus de aliassen die in het veld gebruikt worden — CCITT-FALSE, CRC-16/IBM, CRC-32C, X-25 en de rest.
Polynoom, startwaarde, beide spiegelvlaggen en de laatste XOR staan naast elk resultaat, zodat je een treffer tegen een specificatie kunt controleren.
Breedte, polynoom, init, spiegeling en laatste XOR zijn allemaal aanpasbaar, voor polynomen die de catalogus nooit gehaald hebben.
De berekening gebeurt in je browser. Productieframes en firmware-images verlaten de machine niet.
123456789
CRC-32/ISO-HDLC = 0xCBF43926, CRC-16/MODBUS = 0x4B37, CRC-8/SMBUS = 0xF4
Elke CRC-variant in de RevEng-catalogus publiceert zijn resultaat voor de ASCII-string 123456789. Daarmee is deze invoer de standaard zelftest: wijkt een bibliotheek af van de tabel hier, dan zit de bibliotheek fout.
01 03 00 00 00 0A
CRC-16/MODBUS = 0xCDC5
Holding registers uitlezen van slave 1. Modbus RTU zet de lage CRC-byte eerst, dus dit frame gaat als 01 03 00 00 00 0A C5 CD over de lijn — een omkering die een flink deel verklaart van de checksums die mensen niet kloppend krijgen.
DEADBEEF
MODBUS = 0xC19B, CCITT-FALSE = 0x4097, XMODEM = 0xC457, KERMIT = 0x1915
Gelezen in Hex-modus, dus vier bytes in plaats van de acht tekens van de tekenreeks. De vier bekendste CRC-16-varianten zijn het er volstrekt oneens over. Er is niets kapot: ze verschillen in startwaarde, spiegeling en laatste XOR, niet in correctheid.
123456789 met verwachte waarde 0x29B1
CRC-16/IBM-3740 (in je handleiding waarschijnlijk CRC-16/CCITT-FALSE)
Dit is precies de situatie waarvoor de calculator gebouwd is. Je hebt data en de checksum die iemand anders heeft berekend, maar niet de naam van de variant — dus zoek je naar de parameterset die hem reproduceert.
Protocolframes zijn vrijwel altijd hex. Gebruik tekst alleen als je de checksum van een letterlijke string berekent, zoals de zelftestwaarde 123456789.
In hex-modus worden scheidingstekens genegeerd, dus 01 03 00 00 00 0A, 0x01 0x03 en 010300 00000A worden alle drie geaccepteerd.
De tabel is gegroepeerd op breedte. De formele namen komen uit de RevEng-catalogus, met daaronder de aliassen die je apparaathandleiding waarschijnlijk gebruikt.
Heb je al een checksum en wil je weten van welke variant die is, typ hem dan in het veld voor de verwachte waarde en lees de opgelichte rij af.
Blijf je in tekstmodus staan, dan rekent de calculator over de ASCII-tekens van je hexdump in plaats van over de bytes die daarmee bedoeld zijn. Schakel naar Hex — het aantal bytes onder de modusschakelaar vertelt je welke lezing je hebt gekregen.
Text mode, input "01 03" -> 5 bytes: 30 31 20 30 33
Hex mode, input "01 03" -> 2 bytes: 01 03
Modbus RTU verstuurt de lage CRC-byte eerst. Een frame dat op C5 CD eindigt draagt de checksum 0xCDC5, niet 0xC5CD.
expected 0xC5CD (bytes read in transmission order)
expected 0xCDC5 (bytes reassembled low-byte-first)
De CRC dekt de bytes die eraan voorafgaan. Het hele frame er inclusief staart weer in stoppen levert een restwaarde op in plaats van de checksum.
01 03 00 00 00 0A C5 CD <- trailer included
01 03 00 00 00 0A <- payload only
Eenendertig varianten in de catalogus zijn 16 bits breed. Zonder de andere vijf parameters grenst die naam niets af.
spec says: "trailer is a CRC-16"
spec says: "CRC-16/MODBUS, poly 0x8005, init 0xFFFF, refin/refout true"
Beveiligingstools
Ontsleutel AES online — GCM/CBC/CTR, wachtwoordzin of ruwe sleutel, detecteert automatisch het OpenSSL- & CryptoJS-formaat "U2FsdGVkX1". 100% in de browser, sleutels verlaten de pagina nooit.
Beveiligingstools
Gratis AES-versleuteling online — AES-128/192/256, GCM/CBC/CTR, wachtwoordzin (PBKDF2) of ruwe sleutel. Draait 100% in je browser; niets wordt geüpload.
Beveiligingstools
Genereer en verifieer bcrypt-wachtwoordhashes online — instelbare kostenfactor, $2b$/$2a$/$2y$-prefixes. 100% in je browser; je wachtwoord wordt nooit geüpload.
Beveiligingstools
Gratis online HMAC-generator en -verificator. Bereken HMAC-SHA256/SHA1/SHA384/SHA512 met sleutels in Tekst, Hex of Base64 en Hex/Base64/Base64URL-uitvoer. 100% in je browser — sleutels verlaten nooit de pagina.
Beveiligingstools
Decodeer JWT-tokens direct in je browser. Inspecteer header, payload, signature, vervaldatum en claims. 100% privé — je token verlaat je apparaat nooit.
Beveiligingstools
Gratis online JWT-generator & encoder. Bouw de header en payload en onderteken direct met HS256, RS256 of ES256. 100% in de browser — je secret en sleutel verlaten je apparaat nooit.