CRC-32 di «123456789»
0xCBF43926 0xCBF43926 per CRC-32/ISO-HDLC, la variante usata da ZIP, PNG, Ethernet e gzip.
Incolla esadecimale o testo e ottieni tutte le 63 varianti CRC-8, CRC-16 e CRC-32 in una volta. Hai un checksum che non torna? Inseriscilo e lo strumento nomina la variante: MODBUS, CCITT-FALSE, XMODEM, KERMIT. Tutto in locale.
| Variante | Risultato | 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 | |
Usalo quando il tuo dispositivo documenta un polinomio che non compare nella tabella qui sopra.
Realizzato e verificato dal team di ingegneria di Go Tools.
0xCBF43926 0xCBF43926 per CRC-32/ISO-HDLC, la variante usata da ZIP, PNG, Ethernet e gzip.
0x4B37 0x4B37, con poly 0x8005, init 0xFFFF, ingresso e uscita riflessi, nessuno XOR finale.
0x29B1 0x29B1. Il suo nome formale a catalogo è CRC-16/IBM-3740: poly 0x1021, init 0xFFFF, nessuna riflessione.
63 Questo calcolatore copre 63 varianti catalogate: 20 di larghezza 8, 31 di larghezza 16 e 12 di larghezza 32.
Un controllo di ridondanza ciclico tratta un blocco di dati come i coefficienti di un polinomio binario molto lungo, lo divide per un polinomio generatore fisso usando l'aritmetica modulo 2 e conserva il resto. Quel resto è il checksum. La costruzione ha avuto fortuna perché la divisione si riduce a scorrimenti e XOR, che in hardware non costano quasi nulla, e perché l'algebra dà garanzie certe invece di speranze statistiche: un polinomio a 16 bit scelto bene rileva ogni errore su singolo bit, ogni errore su doppio bit entro una lunghezza di blocco utile, ogni numero dispari di bit invertiti e ogni burst di 16 o meno bit consecutivi corrotti.
Ciò che nella pratica rende il CRC confuso è che il polinomio è solo uno dei sei parametri. Due implementazioni possono concordare sul polinomio e non azzeccare comunque nemmeno un risultato, perché differiscono nel valore iniziale del registro, nel fatto che i byte in ingresso e il registro in uscita abbiano o meno l'ordine dei bit invertito, e nella costante messa in XOR sul valore finale. Una variante CRC è tutto quel set di parametri, non il polinomio da solo — ed è per questo che un nome come «CRC-16» da solo non identifica quasi nulla, e per cui questa pagina mostra accanto a ogni risultato il polinomio, il valore iniziale, entrambi i flag di riflessione e lo XOR finale, con la larghezza come intestazione di gruppo.
Un'avvertenza che la tabella non può mostrare: un polinomio a 16 bit rileva ogni numero dispari di bit invertiti solo se x+1 lo divide. Vale per i due che con più probabilità incontrerai, 0x1021 e 0x8005, ma non per tutti — CRC-16/T10-DIF e CRC-16/PROFIBUS sono fra le eccezioni.
// 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 e CRC-32 si ricalcolano tutti mentre scrivi. Nessun menu a tendina da indovinare prima di poter vedere qualcosa.
Scrivi il checksum che ti è stato dato e le varianti che lo producono vengono evidenziate: identificare un algoritmo ignoto richiede un passaggio invece di venti.
Ogni riga mostra il nome del catalogo RevEng più gli alias usati sul campo — CCITT-FALSE, CRC-16/IBM, CRC-32C, X-25 e gli altri.
Polinomio, valore iniziale, entrambi i flag di riflessione e XOR finale stanno accanto a ogni risultato, così puoi verificare una corrispondenza contro la specifica.
Larghezza, polinomio, init, riflessione e XOR finale sono tutti modificabili, per i polinomi che nei cataloghi non sono mai entrati.
Il calcolo avviene nel tuo browser. Trame di produzione e immagini di firmware non lasciano mai la macchina.
123456789
CRC-32/ISO-HDLC = 0xCBF43926, CRC-16/MODBUS = 0x4B37, CRC-8/SMBUS = 0xF4
Ogni variante CRC del catalogo RevEng pubblica il proprio risultato per la stringa ASCII 123456789. È questo che rende tale input l'autotest standard: se una libreria non concorda con la tabella qui sopra, è la libreria a sbagliare.
01 03 00 00 00 0A
CRC-16/MODBUS = 0xCDC5
Lettura dei registri holding dallo slave 1. Modbus RTU accoda il byte basso del CRC per primo, quindi sulla linea questa trama viaggia come 01 03 00 00 00 0A C5 CD — un'inversione che spiega buona parte dei checksum che la gente non riesce a far tornare.
DEADBEEF
MODBUS = 0xC19B, CCITT-FALSE = 0x4097, XMODEM = 0xC457, KERMIT = 0x1915
Letto in modalità Esadecimale, quindi quattro byte e non gli otto caratteri della stringa. Le quattro varianti CRC-16 più note danno su di essi risultati completamente diversi. Non è rotto niente: differiscono per valore iniziale, riflessione e XOR finale, non per correttezza.
123456789 con valore atteso 0x29B1
CRC-16/IBM-3740 (il tuo manuale potrebbe chiamarlo CRC-16/CCITT-FALSE)
È il caso per cui questo calcolatore è nato. Hai i dati e il checksum calcolato da qualcun altro, ma non il nome della variante — quindi cerchi il set di parametri che lo riproduce.
Le trame di protocollo sono quasi sempre esadecimali. Usa il testo solo quando stai calcolando il checksum di una stringa letterale, come il valore di autotest 123456789.
In modalità esadecimale i separatori vengono ignorati, quindi 01 03 00 00 00 0A, 0x01 0x03 e 010300 00000A sono tutti accettati.
La tabella è raggruppata per larghezza. I nomi formali vengono dal catalogo RevEng, con sotto gli alias che con ogni probabilità userà il manuale del tuo dispositivo.
Se hai già un checksum e vuoi sapere di quale variante è, scrivilo nel campo del valore atteso e leggi la riga evidenziata.
Se resti in modalità testo, il calcolatore elabora i caratteri ASCII del tuo dump esadecimale invece dei byte che rappresentano. Passa alla modalità Esadecimale: il conteggio dei byte sotto il selettore ti dice quale lettura hai ottenuto.
Text mode, input "01 03" -> 5 bytes: 30 31 20 30 33
Hex mode, input "01 03" -> 2 bytes: 01 03
Modbus RTU trasmette per primo il byte basso del CRC. Una trama che finisce con C5 CD porta il checksum 0xCDC5, non 0xC5CD.
expected 0xC5CD (bytes read in transmission order)
expected 0xCDC5 (bytes reassembled low-byte-first)
Il CRC copre i byte che lo precedono. Rimettere dentro l'intera trama, coda compresa, produce un residuo e non il checksum.
01 03 00 00 00 0A C5 CD <- trailer included
01 03 00 00 00 0A <- payload only
Le varianti catalogate larghe 16 bit sono trentuno. Senza gli altri cinque parametri il nome non restringe nulla.
spec says: "trailer is a CRC-16"
spec says: "CRC-16/MODBUS, poly 0x8005, init 0xFFFF, refin/refout true"
Strumenti di sicurezza
Decifra AES online — GCM/CBC/CTR, passphrase o chiave grezza, rileva "U2FsdGVkX1" (OpenSSL/CryptoJS). 100% nel browser, le chiavi restano sul dispositivo.
Strumenti di sicurezza
Crittografia AES online gratuita — AES-128/192/256, GCM/CBC/CTR, passphrase (PBKDF2) o chiave grezza. Funziona al 100% nel browser; nulla viene caricato.
Strumenti di sicurezza
Genera e verifica hash bcrypt delle password online: costo regolabile, prefissi $2b$/$2a$/$2y$. 100% nel tuo browser; la password non viene mai caricata.
Strumenti di sicurezza
Generatore e verificatore HMAC online e gratuito. Calcola HMAC-SHA256/SHA1/SHA384/SHA512 con chiavi in Testo, Hex o Base64 e output Hex/Base64/Base64URL. 100% nel tuo browser — le chiavi non lasciano mai la pagina.
Strumenti di sicurezza
Decodifica token JWT online con il nostro decodificatore JWT gratis. Ispeziona intestazione, payload, firma, scadenza e attestazioni. 100% browser — token mai fuori dal dispositivo. Nessuna registrazione, nessun tracciamento.
Strumenti di sicurezza
Generatore JWT online gratis. Costruisci header e payload, firma con HS256, RS256 o ES256 all'istante nel browser; segreto e chiave non lasciano il dispositivo.