Omocodia nel codice fiscale: che cos’è e come funziona
Aggiornato il · 6 minuti di lettura
Si ha omocodia quando due persone diverse genererebbero lo stesso codice fiscale: l’Agenzia delle Entrate risolve il conflitto sostituendo le cifre del codice con lettere, a partire dalla cifra più a destra. Il risultato è un codice fiscale regolare che contiene lettere dove di norma compaiono numeri.
Che cos’è l’omocodia
Il codice fiscale non è un identificatore casuale: è calcolato a partire da cognome, nome, data di nascita, sesso e comune di nascita. Due persone che condividono tutti questi dati (e la codifica di cognome e nome è tutt’altro che univoca) arriverebbero allo stesso identico risultato.
Poiché il codice deve identificare una sola persona, in questi casi l’Agenzia delle Entrate ne attribuisce una variante. Non modifica i dati anagrafici e non aggiunge caratteri: converte in lettere una o più cifre già presenti, secondo una tabella fissa.
La tabella delle sostituzioni
Ogni cifra ha una e una sola lettera corrispondente. La corrispondenza è biunivoca, quindi da un codice omocodico si può sempre tornare alla forma numerica.
| Cifra | Lettera sostitutiva |
|---|---|
| 0 | L |
| 1 | M |
| 2 | N |
| 3 | P |
| 4 | Q |
| 5 | R |
| 6 | S |
| 7 | T |
| 8 | U |
| 9 | V |
Le uniche lettere che possono comparire al posto di una cifra sono dunque L M N P Q R S T U V. Una lettera diversa in una posizione numerica non è un’omocodia: è un errore.
Quali caratteri possono cambiare
Le posizioni numeriche di un codice fiscale sono sette, distribuite in tre blocchi. Sono le uniche che l’omocodia può toccare: i sei caratteri iniziali, la lettera del mese, la prima lettera del codice Belfiore e il carattere di controllo restano sempre lettere.
| Posizione | Blocco | Nota |
|---|---|---|
| 7–8 | Anno di nascita | ultime due cifre |
| 10–11 | Giorno di nascita | alle donne si sommano 40 |
| 13–15 | Comune di nascita | le tre cifre del codice Belfiore |
L’ordine di sostituzione parte dalla posizione 15 e risale verso sinistra: 15, 14, 13, 11, 10, 8, 7. Con sette posizioni disponibili si possono generare fino a sette varianti successive dello stesso codice di partenza.
Esempio passo per passo
Partiamo da un codice base. La prima variante sostituisce soltanto la cifra più a destra; la seconda aggiunge quella immediatamente precedente, senza mai ripristinare la prima.
| Passaggio | Codice fiscale | Sostituzione |
|---|---|---|
| Codice base | RSSMRA85M01H501Q | nessuna sostituzione |
| Primo livello | RSSMRA85M01H50MI | posizione 15: 1 → M |
| Secondo livello | RSSMRA85M01H5LMT | posizione 14: 0 → L |
Come riconoscere un codice omocodico
Basta guardare le sette posizioni numeriche. Se almeno una contiene una lettera fra L, M, N, P, Q, R, S, T, U e V, il codice è omocodico.
In RSSMRA85M01H5LMT le posizioni 14 e 15 contengono L e M anziché due cifre. Riconvertendole si ottiene il codice Belfiore H501, cioè Roma. La data di nascita e il sesso non cambiano: la variante omocodica conserva integralmente il significato dei dati codificati.
Come riportare un codice omocodico alla forma numerica
Poiché la tabella è biunivoca, l’operazione inversa è deterministica: si riconvertono le lettere che occupano posizioni numeriche e si ricalcola il sedicesimo carattere. Non serve alcun archivio, solo la tabella qui sopra. È l’unico passaggio del codice fiscale che si può davvero invertire senza perdita di informazione.
- Individua le posizioni numeriche. Sono la 7, l’8, la 10, l’11, la 13, la 14 e la 15. Le altre nove non vengono mai toccate dall’omocodia, quindi qualsiasi lettera vi compaia è al suo posto.
- Riconverti solo quelle. In RSSMRA85M01H5LMT le posizioni 14 e 15 contengono L e M, che valgono 0 e 1. I primi quindici caratteri tornano RSSMRA85M01H501.
- Ricalcola il controllo. Sui quindici caratteri riconvertiti il sedicesimo torna Q, non la T del codice omocodico. Il codice di partenza era dunque RSSMRA85M01H501Q.
- Adesso leggilo. H501 è Roma, 85 l’anno, M il mese di agosto e 01 il giorno, che essendo minore di 40 indica un uomo.
Vale anche il contrario, ed è la ragione per cui i codici fiscali omocodici confondono i sistemi informativi: due codici diversi possono riconvertirsi nello stesso codice numerico, perché è esattamente da quella collisione che sono nati. Riconvertire serve a leggere il codice, mai a stabilire se due codici appartengano alla stessa persona.
Perché un gestionale può rifiutarlo
È il problema pratico più frequente legato all’omocodia. Molti software validano il codice fiscale con un’espressione regolare che pretende cifre in tutte e sette le posizioni numeriche: un codice omocodico, pur essendo stato attribuito dall’Agenzia delle Entrate, viene respinto come “formato non valido”.
Schema che rifiuta i codici omocodici
^[A-Z]{6}[0-9]{2}[A-Z][0-9]{2}[A-Z][0-9]{3}[A-Z]$Schema corretto
^[A-Z]{6}[0-9LMNPQRSTUV]{2}[A-Z][0-9LMNPQRSTUV]{2}[A-Z][0-9LMNPQRSTUV]{3}[A-Z]$La differenza è solo l’ammissione delle dieci lettere sostitutive nelle posizioni numeriche. Se poi il software deve interpretare la data o il comune, deve prima riconvertire quelle lettere in cifre: è esattamente ciò che fa il decoder di questa pagina prima di leggere anno, giorno e codice Belfiore.
Prova un codice omocodico
Incolla RSSMRA85M01H5LMT per vedere il riconoscimento in azione: il decoder segnala le sostituzioni e decodifica comunque data, sesso e comune di nascita.
Domande frequenti
Fonte: Agenzia delle Entrate · DM 23 dicembre 1976 (Ministero delle Finanze).