Archive for January, 2008

Come funziona IBAN

Thursday, January 31st, 2008

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. Se non volete mollare il browser, Wolfram Alpha può aiutarvi a fare 330542811101000000123456182900 mod 97.

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

UPDATE 24/6/10: Ho aggiunto il link a Wolfram Alpha per il calcolo.

Sprout: la valanga dei flash widget?

Wednesday, January 30th, 2008

Ho appena fatto un giro su Sprout e devo ammettere che sono rimasto abbastanza impressionato.

Partiamo dal principio: Sprout è un servizio che offre la possibilità di creare widget (o “sprouts”) in Flash attraverso un’interfaccia web, pubblicarle online e gestirle dopo la pubblicazione.

L’interfaccia web del builder è forse l’elemento più impressionante: praticamente una versione dell’editor Flash di Adobe estremamente semplificata e facile da usare (e anch’essa realizzata in Flash). Quasi tutti gli elementi che può essere interessante includere in una widget (calendario, player audio/video, slideshow…) sono già presenti come componenti: includerli è semplicemente questione di un drag-n-drop.

La pubblicazione non l’ho provata, ma sembra sia veramente semplice e lineare, con il supporto specifico per le più famose piattaforme di blogging e social networking.

Altro elemento di sicuro interesse è la possibilità di raccogliere statistiche sulle widget (quante volte sono state utilizzate, visualizzate, cliccate). Inoltre tutte le widget sparse per il web vengono aggiornate automaticamente quando si modifica l’originale.

Perché Sprout mi ha colpito così tanto? Dopotutto non permette di fare niente di più di quanto non si potesse realizzare già con Flash.
La chiave, secondo me, sta nella semplicità.
I video sul web si sono diffusi in maniera esplosiva da quando sono diventati facili da includere e visualizzare. L’onda lunga dei blog è iniziata con le piattaforme di supporto alla pubblicazione.

Se davvero Sprout manterrà le promesse di semplicità che questa beta sembra offrire, temo dovremo presto prepararci ad una valanga di widget in flash, che finiranno per infestare ogni angolo del Web 3.0 :D

Controllo o non controllo?

Tuesday, January 29th, 2008

La simpatica Cariparma – presso la quale ho appena chiuso il mio conto – mi invia una lettera per avvisarmi che da Gennaio le transazioni bancarie saranno basate sul codice IBAN e amorevolmente mi spiega anche come questo codice funziona.

Leggendo la lettera di spiegazione, ho l’impressione che qualcosa non vada. La rileggo con più attenzione. All’inizio dice (i grassetti sono miei):

Il codice IBAN è composto da una serie di caratteri alfanumerici (numeri e lettere senza caratteri di controllo: punti, virgole o barre) …

Poco più sotto:

… nei 27 caratteri di cui è composto sono compresi anche dei caratteri di controllo

Chiarissimo :|

Al di là delle spiegazioni auto-contraddittorie, però, la lettera mi ha spinto ad informarmi un po’ meglio sul funzionamento dell’IBAN: aspettatevi un post a breve ;)

Better left unsaid

Friday, January 18th, 2008

The real art of conversation is not only to say the right thing at the right place but to leave unsaid the wrong thing at the tempting moment.

Dorothy Nevill

Archeologia

Saturday, January 12th, 2008

Frugando tra alcune vecchie scartoffie ho trovato la fattura del secondo PC che abbia mai posseduto – il primo fu un Olidata di cui ogni ricordo è ormai perso nelle nebbie del tempo – nel lontano 1999.  Queste le componenti principali:

  • Case Middle Tower con alimentatore 230W
  • Processore Intel Pentium II 400MHz
  • 64MB SDRAM
  • Disco fisso IBM 8.4Gb EIDE
  • Scheda video Creative Riva TNT 16Mb AGP
  • Scheda audio Sound Blaster PCI128
  • Floppy disk (!) 1.44Mb

Lacrime di commozione :D

Paura e ragione

Friday, January 11th, 2008

Leggo – tramite segnalazione di Bruce Schneier – un articolo di Newsweek sull’uso delle paure nella comunicazione politica.

Al di là del contenuto del (lungo) articolo, è interessante la premessa neurologica che anche Schneier evidenzia:

The evolutionary primacy of the brain’s fear circuitry makes it more powerful than the brain’s reasoning faculties. The amygdala sprouts a profusion of connections to higher brain regions—neurons that carry one-way traffic from amygdala to neocortex. Few connections run from the cortex to the amygdala, however. That allows the amygdala to override the products of the logical, thoughtful cortex, but not vice versa. So although it is sometimes possible to think yourself out of fear (“I know that dark shape in the alley is just a trash can”), it takes great effort and persistence. Instead, fear tends to overrule reason, as the amygdala hobbles our logic and reasoning circuits. That makes fear “far, far more powerful than reason,” says neurobiologist Michael Fanselow of the University of California, Los Angeles. “It evolved as a mechanism to protect us from life-threatening situations, and from an evolutionary standpoint there’s nothing more important than that.”

In pratica: la paura è biologicamente più forte della ragione. Nulla di nuovo, ma fa un certo effetto leggerlo nero su bianco, non è vero?

Teniamo d’occhio DeathSpank

Wednesday, January 9th, 2008

Ron Gilbert ha annunciato oggi sul suo blog di aver trovato – dopo una lunghissima ricerca – un publisher per quello che dovrebbe essere il suo prossimo gioco: DeathSpank: Episode-One: Orphans of Justice.

Del gioco in sé non si sa ancora molto, se non che sarà un misto tra avventura ed RPG che uscirà in vari episodi (suppongo come il recente Sam&Max). Le informazioni al momento sono veramente scarse, ma quando il creatore di Monkey Island fa un annuncio del genere, è il caso di tenere occhi e orecchie ben aperti ;)

Umorismo involontario

Thursday, January 3rd, 2008

Pubblicità vista in metropolitana:

“Grazie a Metis ho trovato un lavoro che conta“.
Paolo, bancario.

Vi prego, ditemi che l’hanno fatto apposta :D