Definición de algoritmo Luhn
El algoritmo de Luhn es una fórmula de suma de comprobación utilizada para validar distintos números de identificación, como números de tarjetas de crédito, IMEI de teléfonos móviles, números de seguro social canadiense, números de identificación de Israel y números de seguridad social griegos (ΑΜΚΑ), entre otros.
También es conocido como fórmula de Luhn o algoritmo de módulo 10 (Modulus 10 Algorithm).
Fue desarrollado por el científico de IBM Hans Peter Luhn y descrito en la patente de Estados Unidos N° 2.950.048, presentada el 6 de enero de 1954 y otorgada el 23 de agosto de 1960.
El algoritmo de Luhn es de dominio público y su uso está ampliamente difundido en la actualidad. Se encuentra especificado en la norma ISO / IEC 7812-1.
No debe considerarse una función hash criptográficamente segura, ya que su objetivo principal es detectar errores de tipeo accidentales y no proteger contra ataques maliciosos. Por ejemplo, puede detectar si un número fue ingresado con un dígito incorrecto o con dígitos invertidos, pero no impide la generación intencional de números válidos.
La mayoría de las tarjetas de crédito y muchos otros identificadores gubernamentales y comerciales emplean el algoritmo de Luhn como método simple para distinguir números válidos de aquellos mal escritos o incorrectos.
Algoritmo en pseudocódigo
function checkLuhn(string purportedCC) {
int sum := integer(purportedCC[length(purportedCC)-1])
int nDigits := length(purportedCC)
int parity := nDigits modulus 2
for i from 0 to nDigits - 2 {
int digit := integer(purportedCC[i])
if i modulus 2 = parity
digit := digit × 2
if digit > 9
digit := digit - 9
sum := sum + digit
}
return (sum modulus 10) = 0
}
El algoritmo funciona de la siguiente manera: se toman los dígitos del número de identificación, comenzando desde la derecha. A cada segundo dígito (empezando por el penúltimo) se lo multiplica por 2. Si el resultado es mayor que 9, se le resta 9. Luego, se suman todos los dígitos (modificados y no modificados). Si el total es divisible por 10, el número es considerado válido.
Ejemplo:
Para el número de tarjeta de crédito 4111 1111 1111 1111:
Resumen: algoritmo Luhn
El algoritmo de Luhn permite validar números de identificación como tarjetas de crédito de manera sencilla y eficiente. Fue creado por Hans Peter Luhn en 1954 y se utiliza ampliamente en la actualidad para detectar errores de tipeo. El código se basa en operaciones aritméticas simples sobre los dígitos y verifica si la suma cumple con la condición de divisibilidad por 10.
Ventajas y desventajas del algoritmo de Luhn
- Ventajas:
- Implementación sencilla y rápida.
- Detecta la mayoría de los errores de tipeo accidentales (como un solo dígito incorrecto o dos dígitos adyacentes intercambiados).
- Requiere pocos recursos computacionales.
- Desventajas:
- No es seguro contra ataques maliciosos, ya que es fácil generar números que pasen la validación.
- No detecta todos los posibles errores (por ejemplo, si dos dígitos separados se intercambian).
Comparación con otros métodos de validación
A diferencia de funciones hash criptográficas o firmas digitales, el algoritmo de Luhn no ofrece protección contra manipulación intencional o fraude. Su propósito es exclusivamente la detección de errores accidentales y no la seguridad.
¿Cuál es la finalidad del algoritmo de Luhn?
El algoritmo de Luhn tiene como finalidad validar números de identificación como tarjetas de crédito, números IMEI, números de seguro social, entre otros, para distinguir números válidos de números mal escritos o incorrectos.
¿Quién creó el algoritmo de Luhn?
El algoritmo de Luhn fue creado por Hans Peter Luhn, un científico de IBM. Fue descrito en la patente de los Estados Unidos No. 2.950.048, presentada en 1954 y otorgada en 1960.
¿En qué consiste el algoritmo de Luhn?
El algoritmo de Luhn es una fórmula de suma de comprobación que se utiliza para validar números de identificación. Consiste en multiplicar por 2 los dígitos en posiciones pares (comenzando desde la derecha), restando 9 si el resultado es mayor a 9, y sumando todos los dígitos. Si la suma es divisible por 10, el número es válido.
¿El algoritmo de Luhn es seguro para proteger contra ataques maliciosos?
No, el algoritmo de Luhn no es una función hash criptográficamente segura y no fue diseñado para proteger contra ataques maliciosos. Su objetivo principal es detectar errores de tipeo accidentales, no garantizar seguridad en las transacciones.
¿Qué tipos de números de identificación se pueden validar usando el algoritmo de Luhn?
El algoritmo de Luhn se puede utilizar para validar números de identificación como tarjetas de crédito, números IMEI, números de seguro social canadiense, números de identificación de Israel y números de seguridad social griegos (ΑΜΚΑ), entre otros.
¿Dónde está especificado el algoritmo de Luhn?
El algoritmo de Luhn está especificado en la norma ISO/IEC 7812-1. Esta norma se utiliza para estandarizar la numeración de tarjetas de identificación bancarias y de crédito, definiendo el algoritmo de Luhn como un método simple de validación de números.
Autor: Leandro Alegsa
Actualizado: 14-07-2025
¿Cómo citar este artículo?
Alegsa, Leandro. (2025). Definición de algoritmo Luhn. Recuperado de https://www.alegsa.com.ar/Dic/algoritmo_luhn.php