Calculadora CRC: Modbus CRC-16, CRC-32 y CRC-8 en línea
Calcule el CRC-8, CRC-16 (Modbus, CCITT, XMODEM), CRC-32 o CRC-64 de un texto o de bytes hexadecimales, e identifique qué algoritmo da un CRC esperado
Sus datos se quedan con usted. La conversión ocurre dentro del navegador; no se envía nada a ningún servidor.
¿Le sirvió esta herramienta?
Gracias, su comentario llegó.
Cómo funciona
Un CRC (verificación de redundancia cíclica) es un valor de control corto que se agrega a un bloque de datos para que el receptor sepa si se alteró en el camino. Quien se comunica con un equipo por Modbus RTU, programa un protocolo serie o compara el CRC-32 de un archivo con un valor publicado necesita calcularlo. Escriba los bytes a la izquierda en hexadecimal: para "01 03 00 00 00 0A" (leer 10 registros desde la dirección 0 del esclavo 1) el CRC-16/MODBUS es 0xCDC5 y viaja con el byte bajo primero, es decir "C5 CD"; la herramienta muestra la trama completa "01 03 00 00 00 0A C5 CD". Los bytes pueden ir separados por espacios, comas, dos puntos o el prefijo 0x. Si escribe texto, se convierte en bytes UTF-8; "123456789" es la entrada de prueba estándar de todo CRC y da CBF43926 en CRC-32. Si no conoce el algoritmo, lea la tabla "Todos" y escriba el valor que ya tiene en "CRC esperado".
Esta herramienta también se busca como calculadora crc, calculadora crc modbus, calcular crc16, calcular crc32, crc modbus, calculadora crc online, calcular crc.
¿Qué es CRC (verificación de redundancia cíclica)?
El CRC (Cyclic Redundancy Check) trata los datos como un número binario largo, lo divide entre un polinomio binario fijo y guarda el residuo como valor de control. El emisor agrega el residuo, el receptor repite la división y compara: con que cambie un solo bit, el residuo cambia. Los CRC protegen enlaces serie (Modbus, CAN), tramas de red (Ethernet) y formatos de archivo comprimido (ZIP, PNG). Existen de 8, 16, 32 y 64 bits; cuanto más ancho, menos probable que un error pase sin detectarse.
¿Qué es Polinomio y parámetros de un CRC?
Seis valores definen por completo un algoritmo CRC: width (cantidad de bits), poly (el divisor), init (valor inicial del registro), refin (si cada byte de entrada se procesa empezando por el bit menos significativo), refout (si el resultado se invierte bit a bit) y xorout (valor que se combina con XOR al final). Ross Williams describió este modelo y el catálogo de CRC de Greg Cook reúne cientos de algoritmos en esta misma forma. Si su hoja de datos trae estos seis valores, escríbalos tal cual con "Algoritmo personalizado".
¿Qué diferencia hay entre un CRC y una suma de verificación (checksum)?
Una suma de verificación simple suma los bytes o los combina con XOR: dos bytes intercambiados o dos errores que se anulan entre sí pasan inadvertidos. Un CRC es una división polinómica en la que cuenta la posición de cada bit: detecta siempre un error de un bit y cualquier ráfaga de errores no más larga que su ancho, y detecta bytes intercambiados con una probabilidad muy alta. Por eso Modbus, Ethernet y ZIP usan un CRC en lugar de una suma, mientras que NMEA (sentencias GPS) e Intel HEX siguen con una suma simple, que esta herramienta no calcula.
Mismo nombre, CRC distintos: CCITT, Modbus y la trampa del orden de bytes
"CRC-16" no es un solo cálculo. CRC-16/CCITT-FALSE, XMODEM, KERMIT y X-25 usan el polinomio 0x1021, pero para "123456789" devuelven 29B1, 31C3, 2189 y 906E. La diferencia está en el valor inicial (FFFF o 0000), en el extremo por el que se procesan los bits de cada byte (reflexión) y en el XOR final. Modbus usa el polinomio 0x8005 con valor inicial FFFF y bits reflejados. Si la hoja de datos solo dice "CRC-16", revise la tabla "Todos" en lugar de confiar en una sola variante.
La segunda trampa es el orden de bytes. Modbus RTU envía primero el byte bajo del CRC: el cálculo da 0xCDC5, pero en la línea aparecen "C5 CD". Si copia esos dos bytes de una captura y busca "C5CD", no encontrará coincidencia. Por eso cada resultado muestra los dos órdenes y el valor esperado también se prueba con los bytes invertidos, con la nota correspondiente. Con texto, el salto de línea también cuenta: Windows termina una línea con dos bytes (0D 0A) y Linux con uno (0A); un solo byte de más cambia el CRC por completo.
¿Qué algoritmo debe elegir?
El protocolo o el formato de archivo determina el algoritmo: búsquelo en la lista en vez de adivinar. Si la documentación trae una tabla de parámetros (polinomio, valor inicial, reflexión, XOR final), escriba esos valores tal cual con "Algoritmo personalizado".
- Modbus RTU (PLC, medidores de energía, variadores): CRC-16/MODBUS
- Transferencias XMODEM/YMODEM y muchos cargadores de arranque: CRC-16/XMODEM
- La hoja de datos dice "CRC-16-CCITT, valor inicial 0xFFFF": CRC-16/CCITT-FALSE (IBM-3740)
- ZIP, PNG, gzip y Ethernet: CRC-32 (ISO-HDLC)
- ext4, Btrfs, iSCSI y la instrucción SSE4.2: CRC-32C
- Sensores 1-Wire de Dallas/Maxim (DS18B20): CRC-8/MAXIM
- Archivos XZ: CRC-64/XZ
Preguntas frecuentes
¿Cómo se calcula el CRC de Modbus?
Modbus RTU usa CRC-16/MODBUS: polinomio 0x8005 (0xA001 reflejado), valor inicial 0xFFFF, bits reflejados y sin XOR final. Escriba la dirección, el código de función y los datos en hexadecimal; el resultado se agrega a la trama con el byte bajo primero. Para "01 03 00 00 00 0A" el CRC es 0xCDC5 y la trama enviada queda "01 03 00 00 00 0A C5 CD".
¿Qué diferencia hay entre CRC-16 CCITT y XMODEM?
Ambos usan el polinomio 0x1021; CRC-16/CCITT-FALSE empieza en 0xFFFF y XMODEM en 0x0000, así que los mismos datos dan resultados distintos: 29B1 frente a 31C3 para "123456789". Elija según el valor inicial de su documentación o compare ambos con una trama conocida.
¿Cómo sé qué algoritmo generó mi CRC?
Tome una trama conocida (datos más CRC), escriba los bytes de datos a la izquierda y el CRC en "CRC esperado", y deje el algoritmo en "Todos". La fila que da ese valor se marca como coincidencia; si el valor está escrito con los bytes invertidos, se indica aparte. Si nada coincide, revise que los bytes del CRC no estén incluidos en la entrada y que los datos sean idénticos byte por byte.
¿CRC-32 es lo mismo que MD5 o SHA-256?
No. CRC-32 es un valor de control rápido pensado para detectar daños accidentales en la transmisión o el almacenamiento; no protege contra cambios intencionales, porque es fácil fabricar otros datos con el mismo CRC. Para demostrar que un archivo no fue modificado, use un hash criptográfico como SHA-256.