El algoritmo de Luhn es la fórmula aritmética que decide si el último dígito de un número de tarjeta está bien puesto. También se le llama suma de control de módulo diez, y su tarea es modesta pero muy rentable: detectar que alguien se ha saltado una tecla o ha intercambiado dos dígitos al escribir. En esta guía lo verás explicado desde cero, podrás reproducir el cálculo en un papel y entenderás por qué aprobarlo no significa en absoluto que la tarjeta sirva para pagar.
Para qué hace falta un dígito de control
Imagina que no existiera. Un dependiente teclea un número de dieciséis cifras y se equivoca en una. Sin ninguna comprobación, el error viaja hasta el emisor, que lo rechaza por no encontrar ninguna cuenta asociada. El resultado final es el mismo, pero se ha gastado una petición, un tiempo de espera y una explicación incómoda delante del cliente.
Un dígito de control resuelve ese problema en el sitio. Antes de enviar nada, el sistema recalcula la suma y detecta que algo no cuadra. El error se corrige donde está el dedo que lo cometió, sin salir del formulario. Por eso la misma idea aparece en muchos identificadores que la gente teclea a mano: números de cuenta, referencias de envío o códigos de barras.
En el caso de las tarjetas, la fórmula se atribuye a Hans Peter Luhn, que trabajaba en IBM en los años cincuenta, y con el tiempo se convirtió en práctica habitual del sector a través de la norma internacional que regula la numeración de tarjetas.
Cómo se calcula paso a paso
El procedimiento es más sencillo de lo que su nombre sugiere. Se trabaja sobre todos los dígitos menos el último, que es el que vamos a comprobar.
- Escribe el número completo y deja aparte el último dígito.
- Recorre los dígitos restantes de derecha a izquierda y duplica uno sí y uno no, empezando por el que está justo antes del dígito de control.
- Si al duplicar obtienes un resultado de dos cifras, súmalas entre sí. Por ejemplo, ocho se convierte en dieciséis, y dieciséis se reduce a siete. Todo queda en un solo dígito.
- Suma los valores obtenidos junto con los dígitos que no duplicaste.
- Calcula cuánto le falta a esa suma para llegar al siguiente múltiplo de diez. Esa diferencia es el dígito de control correcto.
Si el dígito impreso coincide con el que has calculado, el número cuadra. Si no, hay una errata.
¿Qué errores detecta y cuáles se le escapan?
La fórmula cubre bien los dos despistes más comunes: cambiar un dígito por otro y permutar dos dígitos que están uno al lado del otro. Hay una excepción conocida, la pareja formada por cero y nueve, que produce la misma suma en los dos órdenes y por tanto pasa desapercibida. Tampoco ve nada raro cuando se intercambian dos dígitos separados por una distancia par.
Esto tiene una lectura práctica. Si alguien escribe un número inventado pero aritméticamente coherente, la comprobación no dirá nada. La suma de control es un filtro barato, no una verificación de identidad.
¿Se puede confundir con una medida de seguridad?
Ocurre a menudo cuando alguien ve la palabra validación en un formulario de pago. Conviene separar tres niveles que a veces se mezclan en la misma conversación.
| Nivel | Qué comprueba | Dónde se ejecuta |
|---|---|---|
| Formato | Caracteres, longitud y prefijo admitidos | En el formulario y en el servidor |
| Suma de control | Que los dígitos sean coherentes entre sí | En el formulario y en el servidor |
| Autorización | Que exista una cuenta y admita el cargo | Solo contra el emisor |
Únicamente el tercer nivel puede confirmar algo sobre la tarjeta. Los dos primeros son gratuitos, se ejecutan sin conexión y sirven para descartar errores antes de molestar al emisor. Nada más.
Dónde encaja esto con los números de prueba
Todo número de prueba que encuentres ha pasado por esta fórmula; es lo que permite que un generador produzca cadenas que los formularios aceptan como bien formadas. Cuando pides varias tarjetas en el generador de este sitio, cada una sale con su dígito de control ya ajustado, junto con una fecha de vencimiento futura y un código de seguridad.
Conviene recordar qué son esos números: estructuras correctas que nunca han sido emitidas. Ninguna cuenta los respalda y ninguna pasarela real los va a cobrar.
¿Se puede practicar sin escribir código?
Sí, y hacerlo una vez a mano enseña más que leer la fórmula diez veces. Coge cualquier número, aplica los cinco pasos y comprueba si el dígito que habías apartado coincide con el resultado. Si al principio te lías, empieza duplicando solo los dígitos de las posiciones pares contadas desde la derecha y verás que el patrón se repite.
Un detalle que confunde a mucha gente: el cálculo no depende de que el número empiece por un prefijo concreto. La fórmula se aplica igual a cualquier longitud, de modo que una misma rutina sirve para números de trece, quince o diecinueve dígitos. Eso, y no otra cosa, es lo que la hace tan práctica.
Notas para quien programa
La aritmética es la parte fácil; los problemas suelen estar alrededor. Estas son las precauciones que más veces aparecen en una revisión de código.
- Orden de las comprobaciones. Longitud primero, tipo de caracteres después y suma de control al final. Si empiezas por la suma, un número con una letra suelta provoca un mensaje engañoso.
- No confíes solo en el navegador. La comprobación del formulario es una comodidad para el usuario, no un control. Repite el cálculo en el servidor aunque el cliente ya lo haya hecho.
- Cuida la posición al duplicar. En longitudes pares e impares la primera posición que se duplica cambia según desde dónde cuentes. Un error de un solo índice hace fallar la mitad de los números correctos.
- Evita los mensajes absolutos. Decir que el número no es válido cuando en realidad solo ha fallado la suma es confuso; es mejor pedir que se revise.
- Separa el cálculo de la presentación. La función que verifica no debería saber nada de espacios ni de guiones; limpia la entrada antes de llamarla y vuelve a darle formato después.
Sobre los datos con los que alimentas las pruebas, la recomendación es la de siempre: usa valores fijos dentro del proyecto, documenta de dónde salieron y no los regeneres en cada ejecución si con eso pierdes la reproducibilidad.
Siguientes pasos
Si has llegado hasta aquí, ya puedes comprobar a mano cualquier número que te encuentres. El siguiente paso natural es entender cómo se reparten los dígitos dentro de un número, y eso está en la guía sobre el formato del número de tarjeta. Si lo que necesitas es material para probar, el generador produce lotes completos y el artículo de números de tarjeta de prueba explica cómo organizarlos sin que acaben en el sitio equivocado.
Y una última vez, porque es lo que más se malinterpreta: que un número cuadre con Luhn no lo convierte en una tarjeta. Los que generamos aquí son estructuralmente válidos y nunca fueron emitidos.