Detección de errores: tarjetas de crédito
Por Jacobo Tarrío
16 de noviembre de 2003

Hoy he leído acerca del sistema que se utiliza para comprobar que el número de una tarjeta de crédito se ha leído correctamente (que éste pertenezca a quien dice pertenecerle ya es otro asunto). Lo he comprobado con mis dos tarjetas (una de crédito y otra de débito), y en ambas funciona, así que supondré que es real…

Empiecen escribiendo el número de la tarjeta a comprobar, y marquen, de derecha a izquierda, uno de cada dos números, comenzando por el segundo. Por ejemplo, este número (que es válido, pero me acabo de inventar) lo marcarían así: 9 3 8 4 3 8 4 9 2 9 3 8 2 5 4 2.

Ahora sumarían entre sí los números que no están marcados; es decir: 3 + 4 + 8 + 9 + 9 + 8 + 5 + 2 = 48

Ahora toman los números marcados, los multiplican por dos, y suman las cifras que componen esos productos. O sea, empiezan por el 9, que multiplicado por dos da 18, así que suman 1 + 8. Para todos los números marcados, la suma es: (1 + 8) + (1 + 6) + 6 + 8 + 4 + 6 + 4 + 8 = 52.

Finalmente suman entre sí los resultados de ambas sumas; si el número resultante es un múltiplo de 10, el número es válido. Como en nuestro caso 48 + 52 = 100, el número de tarjeta es válido.

Se supone que este sistema detecta cuando se omite una cifra, cuando una cifra se cambia por otra, y cuando dos cifras contiguas se intercambian; son los errores más típicos al transcribir un número de tarjeta de crédito. Para compararlo, vamos a intercambiar dos dígitos de este número, y ver qué ocurre: el nuevo número a comprobar es 9 3 8 4 3 8 4 9 9 2 3 8 2 5 4 2.

Primero, 3 + 4 + 8 + 9 + 2 + 8 + 5 + 2 = 41.

Segundo, (1 + 8) + (1 + 6) + 6 + 8 + (1 + 8) + 6 + 4 + 8 = 57.

Finalmente, 41 + 57 = 98, que no es múltiplo de 10, por lo que el número no es válido.

Este método permite comprobar números de cualquier longitud; sólo recuerden que tienen que empezar a marcar por el segundo dígito comenzando por la derecha (el dígito de más a la derecha es el dígito de control).

Recuerden también que este sistema es para detectar errores de transcripción, no para comprobar si un número de tarjeta existe: esta comprobación se realiza consultando a un ordenador central, por lo que no les recomiendo que intenten utilizarlo para comprar cosas sin pagarlas ;-)

Ejercicio: este sistema permite, en principio, determinar cuándo dos cifras contiguas se intercambian (aunque no dice cuáles, claro). Sin embargo, si las dos cifras contienen unos dígitos determinados, este error pasa desapercibido. ¿Cuáles son estos dígitos?

Respuesta: este algoritmo, para detectar cuándo dos cifras se han intercambiado, lo que hace es que cada una aporte un número distinto si está en una posición “par” que cuando está en una posición “impar”; es decir, un tres suma 3 si no está marcado y 6 si lo está, o un siete suma 7 si no está marcado y 5 (1+4) si lo está. Sin embargo, hay dos dígitos que suman lo mismo marcados y sin marcar: el cero y el nueve (9 x 2 = 18, y 1 + 8 = 9). Por lo tanto, si en un número de tarjeta de crédito aparecen el 9 y el 0 juntos y se intercambian al transcribirlos, el sistema no detectará este error. Y aquí podéis dejar de leer si no queréis álgebra :-)

Si lo queréis ver matemáticamente, supongamos una cifra \(a\) y otra \(b\) (o sea, \(a\) y \(b\) son números enteros entre 0 y 9 inclusive). Existen tres casos posibles: ambos números menores que cinco, ambos números mayores o iguales que cinco, y uno menor que cinco y otro mayor o igual a cinco.

En el primer caso (\(a<5\), \(b<5\)), no se detectaría el error si \(2a+b = 2b+a\); despejando se obtiene \(a=b\), que es un resultado tan trivial como inútil, ya que intercambiar dos cifras iguales no es un error.

En el segundo caso (\(a \ge 5\), \(b \ge 5\)), no se detectaría el error si \(2a-9+b = 2b-9+a\), y despejando se llega nuevamente a \(a=b\).

Finalmente, en el tercer caso (\(a \ge 5\), \(b < 5\)), no se detectaría el error si \(2a-9+b = 2b+a\). Despejando se llega a \(a=b+9\), y los únicos valores de \(a\) y \(b\) que cumplen esto son \(a=9\) y \(b=0\), QED :-)

Otros artículos sobre “Tirando Líneas (2002-2004)”, “códigos”.
Índice.
Salvo indicación en contrario, esta página y su contenido son Copyright © Jacobo Tarrío Barreiro. Todos los Derechos Reservados. Información sobre tratamiento de datos y condiciones de uso.