Checksum (suma de comprobación): definición, tipos y usos

Checksum: qué es, tipos (CRC, Hamming, mod 97) y usos prácticos para detectar errores en cuentas, seriales y transmisiones. Aprende cómo validar datos fácilmente.

Autor: Leandro Alegsa

Una suma de comprobación es un número. Es un tipo de comprobación de redundancia. Hay diferentes formas de calcularlo. Sirve para comprobar que no se han cometido errores al escribir el número. En su forma más sencilla, simplemente se suman los dígitos. Sin embargo, esto no puede detectar errores de intercambio de dígitos. Otras formas mejores (algoritmos) de calcular una suma de comprobación son el código Hamming, la comprobación de redundancia cíclica o la aritmética modular. Uno de los usos de las sumas de comprobación es comprobar que los números de cuenta se han introducido correctamente.

Los identificadores de cuentas bancarias portuguesas son un buen ejemplo de cómo funcionan las sumas de comprobación. Tienen 21 dígitos. Los primeros 19 dígitos identifican el banco, la sucursal y el número de cuenta. Los dos últimos dígitos son sumas de comprobación "mod 97" basadas en la aritmética modular. Un número de cuenta bancaria típico de Portugal es 0002.0123.12345678901.54. Los dígitos tienen el siguiente significado:

  • Los dígitos "0002" representan el banco.
  • Los dígitos "0123" representan la sucursal del banco.
  • Los dígitos "12345678901" representan el número de cuenta.
  • Los dígitos "54" representan la suma de comprobación.

Si se divide 000201231234567890154 (el número de cuenta bancaria sin los puntos) entre 97, la respuesta es 207458809978249 y el resto 1. Como el resto es "1", el identificador de la cuenta bancaria es probablemente correcto. Si la persona que escribió el número se olvidó de un dígito, intercambió dos dígitos o escribió un dígito incorrectamente, el resto no habría sido "1". Si este es el caso, el ordenador debería detectar un error y dar un mensaje de error.

Otro lugar donde se utilizan las sumas de comprobación son los números de serie de los programas informáticos.

Qué es y para qué sirve

En términos simples, una suma de comprobación (o check digit) es un valor calculado a partir de un bloque de datos que se añade a dicho bloque. Al volver a calcular la suma de comprobación sobre los datos recibidos y compararla con el valor almacenado, se puede detectar si hubo modificaciones accidentales (errores de transmisión, escritura, copia, etc.). No debe confundirse con funciones criptográficas: las sumas de comprobación están diseñadas principalmente para detectar errores involuntarios, no para resistir ataques deliberados.

Tipos y algoritmos comunes

  • Paridad: añade un bit que indica si el número de bits "1" es par o impar. Detecta errores de bit único, pero no transposiciones ni pares de errores que mantengan la paridad.
  • Suma simple de dígitos (mod 10, mod 11, etc.): se suman los dígitos o se aplican pesos. Es fácil de implementar (ej.: dígito de control del ISBN-10 usa mod 11 con pesos).
  • Algoritmo de Luhn: usado en tarjetas de crédito; detecta la mayoría de errores comunes de escritura y transposición de dígitos adyacentes.
  • Aritmética modular (por ejemplo, mod 97): usado en IBAN y en el ejemplo portugués. Consiste en calcular el resto de dividir el número (o una transformación del mismo) por un módulo fijo.
  • CRC (Comprobación de Redundancia Cíclica): muy usada en redes y almacenamiento; detecta eficazmente errores de ráfaga y es eficiente de calcular mediante polinomios sobre GF(2).
  • Código Hamming: además de detectar errores, permite corregir errores simples (un bit) y detectar algunos errores dobles.
  • Fletcher, Adler: variantes de sumas de comprobación para bloques de datos que ofrecen mejor detección que la suma simple y son rápidas de calcular.
  • Hashes criptográficos (MD5, SHA-1, SHA-2, SHA-3, etc.): no son "sumas de comprobación" en el sentido clásico, pero se usan para verificar integridad y autenticidad. A diferencia de CRC o sumas simples, están diseñados para dificultar la creación de colisiones intencionales. Sin embargo, su uso depende del nivel de seguridad requerido.
  • Reed–Solomon y códigos de corrección avanzada: usados en CD, DVD, QR y comunicaciones; permiten corregir múltiples errores y recuperar datos cuando hay pérdidas parciales.

Qué errores detecta (y cuáles no)

  • Las sumas de comprobación sencillas detectan con fiabilidad errores simples (un dígito cambiado, bit flip) pero pueden fallar en transposiciones o combinaciones que dejan inalterada la suma.
  • CRC detecta la mayoría de errores de ráfaga hasta una longitud determinada y la mayor parte de errores aleatorios.
  • El código Hamming puede corregir errores de un solo bit y detectar errores de dos bits en muchas configuraciones.
  • Ningún esquema puede garantizar la detección de todos los errores sin añadir una cantidad arbitraria de redundancia; existe siempre la posibilidad de colisiones (distintos mensajes con la misma suma).

Ejemplos prácticos de uso

  • Identificadores bancarios (IBAN y cuentas nacionales): usan módulos como mod 97 para validar números largos.
  • Tarjetas de crédito: usan Luhn para validar números introducidos manualmente.
  • ISBN (libros): usan un dígito de control (ISBN-10 usa mod 11 con pesos; ISBN-13 usa un esquema tipo EAN con pesos alternos).
  • Protocolos de red (Ethernet, PPP, etc.): usan CRC para detectar errores de transmisión.
  • Archivos y descargas: se usan CRC, MD5, SHA-1/SHA-256 para verificar que el archivo recibido coincide con el original; para seguridad ante adversarios, usar hashes criptográficos modernos (SHA-256 o superiores) y firmas digitales.
  • Almacenamiento y corrección en CDs, DVDs, discos SSD/HDD: códigos avanzados como Reed–Solomon y CRC combinados para detección y corrección.
  • Números de serie y claves de producto: frecuentemente incluyen dígitos de control para evitar entradas erróneas.

Implementación y buenas prácticas

  • Para detección de errores accidentales use algoritmos diseñados para el tipo de fallo esperado: CRC para errores de transmisión, Hamming o Reed–Solomon cuando necesite corrección.
  • No confíe en sumas simples para seguridad frente a ataques deliberados: emplee hashes criptográficos o firmas digitales si la integridad y autenticidad son críticas.
  • Evite problemas de desbordamiento al calcular sumas de comprobación de números muy largos: procese por bloques o use aritmética de cadenas si es necesario.
  • Cuando implemente controles tipo mod (ej.: mod 97), convierta y procese el valor de manera que pueda manejarse por el lenguaje/plataforma sin perder precisión (p. ej., operar por partes sobre cadenas de dígitos).
  • Proporcione mensajes de error informativos al detectar discrepancias y, si es posible, sugiera comprobaciones (revisar una cifra concreta, volver a introducir el dato, comparar con otra fuente).

Resumen

Una suma de comprobación es una herramienta sencilla y potente para detectar errores accidentales al manipular datos. Existen muchas variantes —desde simples sumas de dígitos hasta CRC y códigos de corrección avanzados—, cada una con ventajas y limitaciones. Para usos que requieren protección contra manipulaciones maliciosas, conviene combinar sumas de comprobación con medidas criptográficas adecuadas.

Un código de barras EAN moderno: Las partes en verde se llaman espaciadores: Separan los grupos de números. Cada número está codificado por 7 bits, como se muestra. Los primeros 11 dígitos llevan el número del producto. El último dígito, en este caso el número "2", es la suma de comprobación. La suma de comprobación se suma de manera que la suma de las posiciones pares, y la de las impares multiplicada por tres, módulo 10 es 0.Zoom
Un código de barras EAN moderno: Las partes en verde se llaman espaciadores: Separan los grupos de números. Cada número está codificado por 7 bits, como se muestra. Los primeros 11 dígitos llevan el número del producto. El último dígito, en este caso el número "2", es la suma de comprobación. La suma de comprobación se suma de manera que la suma de las posiciones pares, y la de las impares multiplicada por tres, módulo 10 es 0.

Preguntas y respuestas

P: ¿Qué es una suma de comprobación?


R: Una suma de comprobación es un número utilizado como comprobación de redundancia. Sirve para verificar que no se han cometido errores al escribir el número.

P: ¿Cómo se calculan las sumas de comprobación?


R: Las sumas de comprobación pueden calcularse de diferentes maneras, pero en su forma más simple, simplemente se suman los dígitos. Sin embargo, esto no puede detectar errores de intercambio de dígitos.

P: ¿Cuál es un ejemplo de cómo funcionan las sumas de comprobación?


R: Los identificadores de cuentas bancarias portuguesas son un buen ejemplo de cómo funcionan las sumas de comprobación. Tienen 21 dígitos y los dos últimos representan la suma de comprobación "mod 97" basada en la aritmética modular.

P: ¿Cómo ayuda esto a detectar errores?


R: Si se omite algún dígito, se intercambia o se escribe incorrectamente, entonces el resto no sería "1". En este caso, el ordenador debería detectar un error y dar un mensaje de error.

P: ¿Dónde más se utilizan las sumas de comprobación?


R: Las sumas de comprobación también se utilizan para los números de serie de los programas informáticos.

P: ¿Qué ocurre si hay un error detectado por una suma de comprobación?


R: Si hay un error detectado por una suma de comprobación, el ordenador debería detectarlo y dar un mensaje de error.


Buscar dentro de la enciclopedia
AlegsaOnline.com - 2020 / 2025 - License CC3