Calculadora de checksum CRC-32 y CRC-32C | Dos polinomios en una entrada
Calcula el CRC-32 IEEE 802.3 y el CRC-32C Castagnoli desde un único texto o bytes hexadecimales, lado a lado en hex y decimal. Pensada para el momento en que tienes un checksum delante y necesitas saber qué polinomio lo generó.
💡 Sobre esta herramienta
La mayoría de las calculadoras CRC en línea asumen un solo polinomio en silencio, y ahí está el problema: "CRC-32" no es un único número. La variante clásica IEEE 802.3 (polinomio reflejado 0xEDB88320) es la que usan zip, gzip, PNG y las tramas Ethernet. El CRC-32C de Castagnoli (0x82F63B78) es otra cosa: está integrado en SCTP, iSCSI, Btrfs y los metadatos de ext4, en parte porque las CPU modernas lo calculan con una instrucción dedicada.
Cuando un depurador muestra un checksum almacenado y tu código no coincide, la causa habitual es una confusión de polinomio. Esta calculadora muestra ambos a la vez para que compares el valor desconocido con el correcto sin rehacer tu cadena de herramientas. Cambia al modo bytes hex para introducir los bytes crudos tal como aparecen en una captura de paquetes o un editor hexadecimal; se admiten prefijos 0x, espacios, comas y dos puntos.
🧐 Preguntas frecuentes
Q. ¿Qué diferencia hay entre CRC-32 y CRC-32C?
A. Usan polinomios generadores distintos. El IEEE 802.3 CRC-32 emplea 0xEDB88320 (reflejado) y aparece en zip, gzip y PNG. El CRC-32C usa el 0x82F63B78 de Castagnoli, con mejor detección de errores y aceleración por hardware en x86 mediante la instrucción crc32.
Q. Mi checksum no coincide con el del archivo. ¿Por qué?
A. Además del polinomio, las variantes CRC difieren en la reflexión de bits, el valor inicial y el XOR final. Esta herramienta usa los parámetros estándar: inicial 0xFFFFFFFF, entrada y salida reflejadas, XOR final 0xFFFFFFFF. Si un formato usa otros parámetros, el resultado cambia aunque el polinomio sea el mismo.
Q. ¿Cómo verifico que el cálculo es correcto?
A. La cadena de prueba 123456789 da 0xCBF43926 para IEEE CRC-32 y 0xE3069283 para CRC-32C. Son los valores de referencia publicados, así que puedes confirmar la herramienta antes de confiar en ella con tus datos.
Q. ¿Por qué la entrada vacía muestra 00000000?
A. Con el valor inicial y el XOR final estándar, el CRC de cero bytes se cancela y queda en 0x00000000. Es el resultado correcto, no un fallo.
📚 Datos curiosos
La elección de CRC-32C para SCTP e iSCSI no fue casual. La búsqueda que Guy Castagnoli realizó en 1993 ordenó los polinomios por distancia de Hamming, el número mínimo de errores de bit que pueden pasar sin detectarse. Su polinomio capta más patrones de error en longitudes de mensaje comunes que el clásico de IEEE. Años después Intel añadió una instrucción SSE4.2 para ejecutar ese polinomio por hardware, razón por la que los sistemas de archivos diseñados en esta década prefieren la variante "C" mientras tu archivo zip aún lleva el original.