Come funziona IBAN

Posted on Thursday, January 31st, 2008 at 21:53, under mind soup. Tags: , ,

Come dicevo poco tempo fa, ultimamente mi è venuta la curiosità di capire come funzioni il codice IBAN - il codice alfanumerico che dal 1° gennaio 2008 deve essere utilizzato per identificare i conti bancari.
In realtà il codice IBAN è piuttosto semplice: non è altro che l’unione delle vecchie coordinate bancarie, a cui vengono aggiunti degli identificativi internazionali.

Nazione + CD + CIN + ABI + CAB + Numero Conto

Quindi, ad esempio, un codice IBAN valido sarà:

IT 60 X 05428 11101 000000123456

CD e CIN sono dei caratteri di controllo (checksum). Un checksum è una cifra che viene calcolata applicando una funzione matematica ad una serie di dati e serve ad verificare che siano corretti. Ad esempio, prendiamo un numero di 4 cifre come “4321″ e calcoliamo un checksum che sia “1 se la somma delle cifre è pari, 0 se è dispari”. Essendo 4+3+2+1=10 (pari), il checksum sarà “1″. Ora, supponiamo di scrivere per sbaglio il nostro numero come “4351″. Avremo 4+3+5+1=13 (dispari), che non corrisponderà più al checksum: il meccanismo ci ha permesso di accorgerci di un errore.

Ovviamente CD e CIN sono calcolati in maniera meno banale, per garantire una maggiore sicurezza. Vediamo in dettaglio come.

CIN

Il CIN (Control Internal Number) è una lettera dell’alfabeto che rappresenta un checksum per ABI, CAB e Numero di conto corrente. E’ specifico per gli IBAN che riguardano l’Italia (ed esisteva anche prima). Si calcola così:

  1. Si ottiene una stringa concatenando ABI, CAB e Numero di conto (davanti al numero di conto si aggiungono tanti zeri quanti sono necessari a far sì che la stringa sia di 22 caratteri)
  2. Si converte ogni carattere in posizione dispari (primo, terzo, quinto…) in una cifra tra 0 e 25, in base a una tabella (vedi sotto)
  3. Si converte ogni carattere alfabetico in posizione pari (secondo, quarto…) in una cifra tra 0 e 25 (A=0, B=1, …, K=10, …, Z=25)
  4. Si sommano le cifre così ottenute
  5. Si divide per 26: al resto della divisione (mod26) si fa corrispondere una lettera dell’alfabeto (0=A, 1=B, …, 25=Z)

La tabella di conversione per i caratteri dispari funziona nel modo seguente: A/0 => 1, B/1 => 0, C/2 => 5, D/3 => 7, E/4 => 9, F/5 => 13, G/6 => 15, H/7 => 17, I/8 => 19, J/9 => 21, K => 2, L => 4, M => 18, N => 20, O => 11, P => 3, Q => 6, R => 8, S => 12, T => 14, U => 16, V => 10, W => 22, X => 25, Y=> 24, Z => 23.

E’ da notare che i caratteri in posizione pari vanno convertiti solo se sono lettere: se sono già numeri non è necessaria alcuna conversione.

Supponiamo ad esempio di avere come ABI 05428, come CAB 11101 e come Numero di conto 000000123456. Associamo le cifre ai vari caratteri:

0 5 4 2 8 1 1 1 0 1 0 0 0 0 0 0 1 2 3 4 5 6
1 5 9 2 19 1 0 1 1 1 1 0 1 0 1 0 0 2 7 4 13 6

La somma delle cifre così ottenute è 75, che diviso per 26 fa 2 col resto di 23. Al 23 corrisponde la lettera X, che infatti è il nostro CIN.

CD

La cifra di controllo (CD: Check Digit) è quella che si trova subito dopo l’identificativo della nazione e serve come checksum dell’intero IBAN. Il meccanismo per calcolarlo è lo stesso per ogni paese:

  1. Si inizia ponendo la CD (che è ignota) pari a 00
  2. Si spostano i primi 4 caratteri dell’IBAN (identificativo della nazione e CD) dalla sinistra alla destra della stringa
  3. Si convertono tutti i caratteri alfabetici in numeri compresi tra 10 e 35 (A=10, B=11, …, Z=35)
  4. Si divide per 97 e si considera il resto della divisione (mod97)
  5. Si sottrae il risultato a 98, ottenendo la CD

Sempre utilizzando l’IBAN dell’esempio precedente, spostiamo i primi 4 caratteri ottenendo:

X0542811101000000123456IT00

Sostituiamo le lettere ai numeri corrispondenti:

330542811101000000123456182900

Effettuando l’operazione di mod97 avremo 38, che sottratto a 98 ci fornisce la CD, ovvero 60. Attenzione: a differenza del CIN, non bisogna sommare le cifre tra loro prima dell’operazione di mod97: per quanto possa sembrare strano, la divisione va fatta proprio sul lunghissimo numero ottenuto al punto 3. Una buona calcolatrice scientifica non dovrebbe comunque avere problemi ad eseguire l’operazione. Funziona anche con la calcolatrice di Windows ;)

UPDATE 5/7/08: Ho modificato leggermente il post cercando di chiarire alcuni punti.

15 Responses to “Come funziona IBAN”

  1. Antonio Says:

    Non sono riuscito a capire in che modo si sommano le cifre del codice CD (dell’IBAN) dopo la sostituzione dei caratteri alfabetici per ottenere, come nel tuo esempio, il resto di 38.
    Ti ringrazio per un chiarimento.

  2. Simbul Says:

    Non si sommano: semplicemente tutte le cifre messe una di fianco all’altra formano un numero. Quel numero è da dividere per 97.
    Inizialmente anche io non avevo capito il meccanismo, perché mi facevo ingannare dal fatto che per il CIN le cifre andassero sommate tra loro ;)

  3. Glorfind3l Says:

    Non hai proprio na cippa da fare te neh :D

  4. Cymon Says:

    E’ un modo indiretto per chiederci dei soldi?

  5. Simbul Says:

    Beh, no, perché altrimenti avrei usato il *mio* IBAN per fare gli esempi :P

  6. rimar13 Says:

    In ogni caso 330542811101000000123456182900 è una cifra enorme, come fai a dividerla per 97 e trovare pure il resto?

  7. Simbul Says:

    Con molta, molta pazienza…

    Oppure usando la funzione MOD di una qualsiasi calcolatrice scientifica ;)

  8. Vaifer Says:

    Grazie per le info.
    Sono riuscito a calcolare il CIN seguendo la procedura descritta, mentre per il check ho avuto problemi fino a quando non ho letto la discussione e sono arrivato alla “funzione MOD…”

  9. Simbul Says:

    In effetti, rileggendo a distanza di mesi il post, ci sono dei punti non chiarissimi. Se trovo un attimo di tempo vedo di apportare qualche modifica chiarificatrice.

  10. ELISABETTA Says:

    NON RIESCO A CALCOLARE IL CD, USANDO LA CALCOLATRICE SCENTIFICA IL RISULTATO NON E’ ESATTO, COME DEVO CALCOLARE IL CD

  11. Simbul Says:

    In che senso non è esatto?
    In ogni caso, anche se mi sembra improbabile, non escludo che la calcolatrice non sia in grado di gestire numeri così grandi. Prova con un’altra calcolatrice o con quella di Windows ;)

  12. LeLe Says:

    Attenzione, per il CD bisogna considerare il resto della divisione approssimato a solamente 2 decimali. Grazie per la spiegazione

  13. Simbul Says:

    Non ho ben capito cosa intendi. Il resto della divisione tra interi dovrebbe essere sempre un numero intero: come fa ad avere dei decimali?

  14. VODDO Says:

    CIAO, MI SAPETE DIRE UN MODELLO DI CALCOLATRICE SCIENTIFICA CHE ABBIA LA FUNZIONE MOD DI CUI CITATO SOPRA?!

  15. Simbul Says:

    Sui modelli specifici non so bene cosa dirti. Penso che qualsiasi calcolatrice scentifica ce l’abbia.

    In ogni caso, anche una normale calcolatrice può essere sufficiente:
    1) Fai la normale divisione (nell’esempio del CIN, 75/26 = 2,8846…)
    2) Consideri solo le cifre prima della virgola (2,8846… -> 2)
    3) Moltiplichi di nuovo per il divisore (2*26 = 52)
    4) La differenza con il numero di partenza è il resto (75-52 = 23)

    Certo, con numeri di 30 cifre appare più complicato, ma la base è sempre quella ;)

Leave a Reply