Portada arrow Algoritmos arrow Validar un número de cuenta
Validar un número de cuenta
sábado, 07 de octubre de 2006
Los números de cuenta bancaria en España llevan un par de dígitos de control para evitar posibles problemas de transcripción.

La forma de validarlos es muy sencilla.

En primer lugar, debemos darnos cuenta de que un número de cuenta completo está formado por varias partes:

  • 4 dígitos que identifican a la entidad bancaria
  • 4 dígitos que identifican a la sucursal
  • 2 dígitos de control
  • 10 dígitos que son el número de cuenta dentro de la sucursal

En total, 20 dígitos.

A este tipo de numeración de cuentas bancarias se le denomina clave SICA.

El primero de los dígitos de control se calcula a partir de los cuatro dígitos de la entidad más los cuatro dígitos de la sucursal.

El segundo dígito de control se calcula a partir de los diez dígitos de la cuenta.

El algoritmo es de tipo checksum, en el que se multiplica cada dígito de la cuenta empezando por el de más a la derecha por un peso específico que se obtiene de la siguiente tabla según su posición. Estas multiplicaciones se suman y si el resultado es s, se el dígito de control se calcula de la siguiente manera:

  • dc=(11-(s mod 11))
  • si (dc==11) entonces dc=0
  • si dc (dc==10) entonces dc=1

Tabla de pesos. La primera fila es la posición (por la derecha), y la segunda el peso.

12345678910
63791058421


Por ejemplo, supongamos la siguiente cuenta (ficticia, desde luego):

Entidad: 9080

Sucursal: 1234

Cuenta: 102030

Para hallar el primer dígito de control, concatenamos la entidad y la sucursal:

90801234

Necesitamos que la sucursal tenga cuatro dígitos. Si la sucursal no tuvieran cuatro, se rellena con ceros a la izquierda.

Recorremos la cadena de derecha a izquierda, multiplicando por los pesos:

suma=4*6 + 3*3 + 2*7 + 1*9 + 0*10 + 8*5 + 0*8 + 9*4 =
24+9+14+9+0+40+0+36=
132

Como la concatenación de entidad y sucursal tiene ocho dígitos como máximo y la tabla 10, no utilizamos los dos últimos.

Finalmente, el primer dígito de control viene dado por

dc1=11-(132 mod 11)=11-0=11

Cuando este resultado parcial el 11, lo sustituimos por 0, así que en esta caso, el primer dígito de control es 0.


El segundo dígito de control se obtiene de manera análoga, pero para ello se utilizan los 10 dígitos del número de cuenta. Como la tabla tiene 10 pesos, en esta ocasión se utiliza toda la tabla. Si la cuenta no tuviera 10 dígitos, simplemente no se utiliza toda la tabla.

En nuestro caso, la cuenta es 102030, así que la suma es

suma=0*6 + 3*3 + 0*7 + 2*9 + 0*10 + 1*5=0+9+0+18+0+5=32

El segundo dígito de control sería

dc2=11-(suma mod 11)=11-10=1


Observa este fragmento de código en C#. El método dc aplica el algoritmo de los pesos al entero i. Como este algoritmo se aplica dos veces (una para entidad concatenado con sucursal y otra para la cuenta) se ha codificado en un método aparte. El método DigitosControl es el encargado de invocarlo. En esta ocasión, tanto la entidad como la sucursal como la cuenta la hemos captado con enteros, sin realizar conversiones a cadena.

static int dc(long i) {
     int[] pesos={6,3,7,9,10,5,8,4,2,1};
     int contador = 0;
     long s=0, d;
     while (i != 0)
     {
        d = i % 10;
        i = i / 10;
        s += d * pesos[contador];
        contador++;
     }
     int resultado=(int)(11-(s % 11));
     if (resultado==10)
        resultado=1;
     else if (resultado==11)
        resultado=0;
     return resultado;
 }
 
static int DigitosControl(int entidad, int sucursal, long cuenta) {
    long d = dc(entidad * 10000 + sucursal);
    d = d * 10;
    d += dc(cuenta);
    return (int)d;
 }
 

 
←Artículo anterior   Artículo siguiente→

Categorías

¿Quién está en línea?

 web tracker

Suscríbete

RSS feed Sindicación RSS

(¿Qué es la sindicación RSS?)


Suscribir por e-mail

¿Dónde estoy?

Estás en La tecla de ESCAPE, un sitio web personal en el que nos gusta hablar de algoritmos, informática, tecnología, ciencia, ingeniería, internet... y cualquier tontería que se nos ocurra. El punto de vista de nuestros artículos técnicos suele ser muy básico, así que a menudo adoptamos grandes simplificaciones. (Más...-Términos de uso)