El número de nuestra tarjeta consta de 16 dígitos. Están separados en grupos de 4 para poder identificarlo mejor, es decir, no es porque cada grupo de 4 dígitos signifique una cosa, sino que la razón eminentemente práctica:
1234567812345678
El significado de esos 16 números es el siguiente:
- Los cuatro primeros dígitos (1234) son el número de identificación de la entidad que nos proporciona la tarjeta, que es diferente según la entidad a la que corresponde (hasta siendo de la misma entidad, dos tarjetas de distintos continentes pueden tener números distintos).
- El siguiente dígito, (5) indica el tipo de tarjeta y la entidad financiera a la que corresponde (American Express, VISA, …).
- Los diez dígitos posteriores (6781234567) son algo así como el número de identificación del usuario al que pertenece la tarjeta, que lo identifican de forma única.
- El dígito final (8) es un dígito de control.
Y en este último punto es donde entras las matemáticas. El dígito de control se calcula a partir de los dígitos anteriores y sirve para confirmar que el número de la tarjeta es un número válido. Tengamos en cuenta que hay muchos lugares donde se pueden introducir números de tarjeta, por lo que es interesante que exista un algoritmo para desechar números de tarjeta falsos.
El algoritmo que se utiliza para calcular el dígito de control de una tarjeta se denomina algoritmo de Luhn, y se debe al informático alemán Hans Peter Luhn. Está basado en la aritmética modular y los pasos a seguir son los siguientes:
- De izquierda a derecha, tomamos las cifras que aparecen en las posiciones impares y las multiplicamos por 2. Si el número obtenido es menor que 10 nos quedamos con él y si es mayor que 10 sumamos las cifras de ese número y nos quedamos con el resultado (esto es, calculamos el valor del resultado módulo 9).
- Sumamos todos los resultados obtenidos en el paso anterior. Digamos que esa suma vale A.
- Sumamos todos los dígitos que aparecen en las posiciones pares del número de la tarjeta (excepto el dígito de control, que es el que no sabemos). Llamemos B a dicha suma.
- Ahora sumamos los dos resultados anteriores. Tomamos el valor de esta suma y vamos restando 10 hasta obtener un número entre 0 y 9 (es decir, calculamos Suma módulo 10). Entonces el dígito de control (DC) es 10 menos ese número obtenido. Expresado matemáticamente:
DC = 10 – (A + B mod 10)
Para saber si un número de tarjeta es falso lo que podemos hacer es añadir el último dígito del número (el supuesto dígito de control) a la suma de los dígitos de las posiciones pares. Si el resultado de A+B no es múltiplo de 10 (es decir, si no es igual a 0 módulo 10) entonces el número de la tarjeta es falso.
Fuente: https://www.gaussianos.com