El algoritmo de Luhn es un método creado para la verificación de números de identificación, como los números de las tarjetas de crédito (Visa, MasterCard) o el IMEI de los teléfonos móviles.
Su creador fue Hans Peter Luhn, un científico de IBM y su uso ha sido tan extendido que desde que fuera creado hoy controla la creación y validación de todos los plasticos que se otorgan a los tarjetahabientes de todo el mundo.
Este algoritmo es muy simple, nos dice que dada un número que contenga solamente dígitos [0-9], una tarjeta de crédito es válida si y solo si, obteniendo la reversa de este número, y la suma sus dígitos debe ser un múltiplo de 10, es decir que la suma módulo 10 debe ser igual a cero.
La forma en sumar es la siguiente, una vez hayamos invertido el número, si es posición impar, sumamos el dígito, si es posición impar, multiplicamos ese dígito por dos y sumamos los dígitos de ese número, para hacerlo más práctico, si el doble de ese dígito es mayor o igual a 10, le restamos 9 a ese doble, y finalmente se debe verificar que la suma que se realizó sea un múltiplo de 10.
Así funciona el algoritmo de Luhn
Explicare el algoritmo de validación con un ejemplo.
Tenemos el número 49927398716.
- Multiplicamos por 2 los dígitos que ocupan las posiciones pares empezando por el final:
(1×2) = 2, (8×2) = 16, (3×2) = 6, (2×2) = 4, (9×2) = 18 - Sumamos los dígitos que ocupaban las posiciones impares con los dígitos de los productos obtenidos:
6 + (2) + 7 + (1+6) + 9 + (6) + 7 + (4) + 9 + (1+8) + 4 = 70 - Si el resto de dividir el total entre 10 es igual a cero, el número es correcto:
70 mod 10 = 0
Código en PHP para implementar el Algoritmo de Luhn
function luhn($number) {
$odd = true;
$sum = 0;
foreach ( array_reverse(str_split($number)) as $num) {
$sum += array_sum( str_split(($odd = !$odd) ? $num*2 : $num) );
}
return (($sum % 10 == 0) && ($sum != 0));
}
tengo un numero de tarjeta, pero no sale en cvv. como podría generar el cvv?
HOLA TENGO VARIOS DATOS COMPLETOS SIN CCV2 ME PODRIAS A YUDAR …ESTOY EN COLOMBIA SI PUEDES ESCRIBEMEE…+573202869590…JUANCHISSS
Hola ¿no tienes el código en C y sin usar los arreglos? y gracias por la informacion.
Hola Antonio, de momento no tengo el código en ese lenguaje de programación
Si género una tarjeta es ilegal?
??
Hola Martin, solo generas un número. Pero no generas una válida para hacer compras
no le entendí mejor dime el numero de tarjetas de bancos validos
Hola Marcos, si requieres números de tarjeta de crédito para hacer pruebas o validaciones en algún software. Solo entra aquí: https://www.quobit.mx/como-generar-numeros-de-tarjetas-de-credito-validos.html vienen números válidos de tarjetas Visa, Mastercard, American Express, etc.
Hola Carlos, gracias por la información. según entiendo por medio de esta formulación matemática podemos determinar la veracidad o no de la numeración de una TDC, pero, ¿Podríamos también saber a qué Banco pertenece?
Gracias y saludos
los primero 6 números te la la entidad y el tipo, busca en la web, bin base.
Buen dia necesito apoyo con una formula necesito validar 644 codigos y el ultimo digito me piden algoritmo luhn pero no se como proceder.
ATT