Dígitos de las tarjetas de crédito y cálculo del dígito de identificación

Analicemos nuestra tarjeta. Podemos ver que el número de la misma consta de 16 dígitos separados en grupos de 4. Lo que vamos a hacer en este artículo es explicar qué significan cada uno de esos números y resaltar el papel que las matemáticas tienen en el número de la tarjeta en su conjunto.

Los números de una tarjeta de crédito

Como decíamos, el número de nuestra tarjeta consta de 16 dígitos, como por ejemplo vemos en la tarjeta que aparece en la imagen de la derecha. 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. Vamos a tomar como ejemplo el número:

1234567812345678

El significado de esos 16 números es el siguiente:

  • Los cuatro primeros dígitos (1234 en nuestro caso) 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 en la nuestra) indica el tipo de tarjeta y la entidad financiera a la que corresponde (American Express, VISA, …).
  • Los diez dígitos posteriores (en nuestro ejemplo, 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 en la de la imagen) 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 (seguro que a muchos esto os recuerda al post sobre el ISBN). 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:

    1. 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).
    2. Sumamos todos los resultados obtenidos en el paso anterior. Digamos que esa suma vale A.
    3. 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.
    4. 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)
      • A=6+7+2X+9+1+4+2+8=2X+37
      • B=9+6+2+5+7+8+7+2=46
      • A+B=2X+83
      • X=5: entonces 2X=10 y el resultado sería 1+83=84. No.
      • X=6: entonces 2X=12 y el resultado sería 3+83=86. No.
      • X=7: entonces 2X=14 y el resultado sería 5+83=88. No.
      • X=8: entonces 2X=16 y el resultado sería 7+83=90. Si.
      • X=9: entonces 2X=18 y el resultado sería 9+83=92. No.

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 decír, si no es igual a 0 módulo 10) entonces el número de la tarjeta es falso.

Vamos a poner un ejemplo, y para ello utilizaremos que aparece en la imagen anterior:

1234567812345678

Colocaremos todos los datos en una tabla y después veremos si la suma final es no es múltiplo de 10:

Número de tarjeta 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
Impares por 2 módulo 9 2 6 1 5 2 6 1 5 A=28
Dígitos en posición par 2 4 6 8 2 4 6 8 B=40
Suma 1 2 6 4 1 6 5 8 1 2 6 4 1 6 5 8 A+B=68

Ahora:

68 \equiv 8 \mod 10

Por tanto el número de la tarjeta de la imagen es falso. Podéis probar con vuestras tarjetas de crédito para comprobar que el algoritmo da resultados correctos, esto es, que los números de vuestras tarjetas son totalmente verdaderos..

¿Cómo recuperar un dígito perdido de un número de tarjeta?

Como es evidente, este algoritmo puede echarnos una mano en algún momento. Imaginemos que no recordamos un dígito del número de nuestra tarjeta (o que dudamos entre varios, que no lo tenemos claro), querecordamos todos los demás y que sabemos qué posición ocupa el que se nos ha olvidado. Entonces el algoritmo de Luhn nos ayuda a recuperar ese número.

Tomemos como ejemplo el número

3986X29557281742

Supongamos que ese es nuestro número de tarjeta, pero que no recordamos qué dígito es el que corresponde a la posición que ocupa X. Bien, para calcular cuál es ese dígito simplemente planteamos el algoritmo de Luhn fijándonos en si X ocupa una posición par o una impar y recordando que el resultado final debe ser igual a 0 módulo 10. En nuestro caso nos queda:

Por tanto debe cumplirse que 2X+83 sea un múltiplo de 10. Bueno, no exactamente, ya que hay que recordar que si 2X es mayor o igual que 10 hay que sumar sus cifras.

Bueno, vamos a ver qué valor tiene X. Por un lado, si X < 4, obtenemos que 2X es un número de una cifra, por lo que nos quedaríamos con su valor. Pero en ese caso tendríamos que 2X+83 es un número impar, por lo que es imposible que sea igual a 0 módulo 10. Por ello, debe ser X \ge 4.

Probando ahora con el resto de valores posibles de X obtenemos el resultado:

Con esto calculamos el dígito que nos faltaba. Era X=8 y el número de nuestra tarjeta quedaría así:

3986829557281742

y solo falta “la tarjeta” … :

 


toca hacer el programita para calcularlo, y tenerlo a punto para cualquier ocasión que os haga falta…

    saludos
    ms, 4-12-2010
__________

NOTA: Los interesados en información sobre contrato de soporte Asistencia Tecnica de SATINFO y/o licencia de uso/actualizaciones de sus utilidades, contacten con
info@satinfo.es
__________

Este blog no se hace responsable de las opiniones y comentarios de los textos en los que se cita la Fuente, ofreciendo su contenido solo para facilitar el acceso a la información del mismo.

Puedes seguir cualquier respuesta a esta entrada mediante el canal RSS 2.0. Los comentarios y los pings están cerrados.

Los comentarios están cerrados.

 

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies