<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>Algoritmi de verificare pentru CNP, CIF, ISBN, IBAN, Card Bancar, NIF</title>
        <description>
            <![CDATA[Mereu cand dorim sa realizam un sistem cu datele personale si de indentificare ale utilizatorilor nostri, vom avea nevoie si de algoritmele care stau la baza acestor date. Am incercat in acest articol sa centralizez cei mai importanti algoritmi care va pot ajuta sa evitati datele fals declarate in formele dumneavoastra de inregistrare.
Am postat pe blog-ul meu aceste metode si anume: 

Algoritmul de verificare a :

CNP (Cod Numeric Personal)

CIF (Cod de Identificare Fiscala)

IBAN (International Bank Account Number)

ISBN (International Standard Book Number)

Card Bancar

NIF (Numere de Identificare Europene)




Cuvinte cheie: validare, cnp, cif, nif, isbn, iban, cont, card<br />
CNP – Cod Numeric Personal
Codul Numeric Personal constituie numarul de ordine atribuit de Evidenta Populatiei unui individ la nastere.

Conform articolului 5 din Legea nr.105 din 25 septembrie 1996 privind evidenta populatiei si cartea de identitate, fiecarei persoane fizice i se atribuie, incepand de la nastere, un cod numeric personal care se inscrie in actele si certificatele de stare civila si se preia in celelalte acte cu caracter oficial, emise pe numele persoanei respective, precum si in Registrul permanent de evidenta a populatiei.

Codul numeric personal reprezinta un numar semnificativ ce individualizeaza o persoana fizica si constituie singurul identificator pentru toate sistemele informatice care prelucreaza date nominale privind persoana fizica.

Gestionarea si verificarea atribuirii codului numeric personal revine Ministerului de Interne, prin formatiunile de evidenta a populatiei.

Pentru persoanele fizice romane cu domiciliul in Romania codul de identificare fiscala este codul numeric personal atribuit de Ministerul de Interne.Persoanele fizice straine si persoanele fizice romane fara domiciliu in Romania vor beneficia de numar de identificare fiscala (NIF).

Un CNP este alcatuit astfel :

|S| |AA| |LL| |ZZ| |JJ| |ZZZ| |C|
|_| |__| |__| |__| |__| |___| |_|

C – Cifra de control

ZZZ - Numarul de ordine atribuit persoanelor

JJ - Codul judetului

ZZ - Ziua nasterii

LL – Luna nasterii

AA – Anul nasterii

S – Cifra sexului (M/F) pentru:

1/2 – cetateni romani nascuti intre 1 ian 1900 si 31 dec 1999

3/4 – cetateni romani nascuti intre 1 ian 1800 si 31 dec 1899

5/6 – cetateni romani nascuti intre 1 ian 2000 si 31 dec 2099

7/8 – rezidenti

Persoanele de cetatenie straina se identifica cu cifra “9″

Algoritmul de validare al unui cod CNP
Pas preliminar: Se testeaza daca codul respecta formatul unui cod CNP. Adica prima cifra sa fie cuprinsa in intervalul 1 – 6 sau sa fie 9 pentru straini. Urmatoarele sase cifre trebuie sa constituie o data calendaristica valida in formatul AALLZZ.

Pas 1: Se foloseste cheia de testare “279146358279″. Primele douasprezece cifre se inmultesc pe rand de la stanga spre dreapta cu cifra corespunzatoare din cheia de testare.

Pas 2: Cele douasprezece produse obtinute se aduna si suma obtinuta se imparte la 11.

Daca restul impartirii la 11 este mai mic ca 10, atunci acesta va reprezenta cifra de control.
Daca restul impartirii este 10 atunci cifra de control este 1.
Pentru un CNP valid cifra de control va trebui sa coincida cu cifra de pe pozitia treisprezece din CNP-ul initial.<br />
CIF – Cod de Identificare Fiscala

CIF – codul de identificare fiscala este un cod numeric constituind codul unic de identificare a unui comerciant.Acesta se mai numeste si cod fiscal sau cod unic de identificare. Pana la 1 ianuarie 2007 s-a numit Cod Unic de Inregistrare (CUI).

Conform legii nr. 359 din 8 septembrie 2004, privind simplificarea formalitatilor la inregistrarea in registrul comertului a persoanelor fizice, asociatiilor familiale si persoanelor juridice, inregistrarea fiscala a acestora, precum si la autorizarea functionarii persoanelor juridice:

Solicitarea inregistrarii fiscale a unui comerciant se face prin depunerea cererii de inregistrare la biroul unic din cadrul oficiului registrului comertului de pe langa tribunal, iar atribuirea codului unic de inregistrare de catre Ministerul Finantelor Publice este conditionata de admiterea cererii de inregistrare in registrul comertului de catre judecatorul-delegat.
Pentru asociatiile familiale, precum si pentru persoanele juridice prevazute la art. 2 structura codului unic de inregistrare se stabileste de Ministerul Finantelor Publice, Ministerul Muncii, Solidaritatii Sociale si Familiei, Ministerul Sanatatii, Ministerul Administratiei si Internelor si Ministerul Justitiei.
Pentru persoanele fizice codul unic de inregistrare coincide cu codul numeric personal atribuit de Ministerul Administratiei si Internelor sau, dupa caz, cu numarul de identificare fiscala atribuit de Ministerul Finantelor Publice.
Atributul fiscal atasat codului unic de inregistrare este un cod alfanumeric avand semnificatia categoriei de platitor de taxe si impozite la bugetul de stat.Daca atributul fiscal are valoarea “RO”, acesta atesta ca persoana juridica a fost luata in evidenta organului fiscal ca platitor de T.V.A.

Un CIF este alcatuit astfel :
[ |ZZZZZZZZZ| ] |C|
|_________| |_|
C  –> Cifra ce control

ZZZZZZZZZ –> Numarul de ordine (maxim 9 caractere)

Algoritmul de validare al unui cod CIF
Pas preliminar: Se testeaza daca codul respecta formatul unui cod CIF. Adica lungimea maxima sa fie de 10 cifre si sa contina doar caractere numerice.

Pas 1: Se foloseste cheia de testare “753217532″. Se inverseaza ordinea cifrelor codului CIF precum si a cheii de testare.

Pas 2: Se ignora prima cifra din codul CIF inversat (aceasta este cifra de control) si se inmulteste fiecare cifra cu cifra corespunzatoare din cheia de testare inversata.

Pas 3: Se aduna toate produsele obtinute. Suma rezultata se inmulteste cu 10 si produsul este impartit la 11. Cifra obtinuta, in urma operatiei MODULO 11 reprezita cifra de verificare. Daca in urma impartirii s-a obtinut restul 10 atunci cifra de verificare va fi 0.

Pas 4: Pentru un CIF valid cifra de verificare va trebui sa corespunda cu cifra de control a codului CIF initial.<br />
IBAN – International Bank Account Number
Codul IBAN este un standard international pentru numerotarea codurilor bancare. A fost adoptat pentru prima oara de catre Comitetul European pentru Standarde Bancare iar in prezent este cunoscut ca ISO 13616:2003. IBAN-ul consista dintr-un cod de tara ISO 3166-1 de doua litere, urmat de doua cifre de control, si pana la 30 de caractere alfanumerice pentru codul contului bancar domestic (BBAN – Basic Bank Account Number).

Pentru Romania, primele patru caractere ale codului BBAN constituie codul national al bancii de care apartine contul respectiv. Lungimea codului BBAN este fixata de comitetul bancii nationale al fiecarei tari si trebuie sa fie aceeasi pentru toata tara.

In format electronic codul IBAN trebuie sa nu contina spatii sau alte caractere despartitoare, iar atunci cand este tiparit pe hartie este exprimat in grupuri de cate patru caractere, cu ultimul grup de lungime variabila.

Un IBAN este alcatuit astfel :

|RO| |XX| |yyyy| |ZZZZZZZZZZZZZZZZ|
|__| |__| |____| |________________|
:           :          :                                 :
:           :          :                                 :
:           :          :                                 –> 16 caractere care identifica Ã®n mod unic unitatea
:           :          :                                       teritoriala a institutiei si contul clientului
:           :          :                                       deschis la respectiva unitate teritoriala
:           :          :                                       (alfanumerice, majuscule)
:           :          :
:           :          –> 4 caractere de identificare a institutiei (alfabetice,
:           :           majuscule), reprezentÃ¢nd primele patru caractere ale codului
:           :           BIC al institutiei
:           :
:            –> 2 caractere de verificare (numerice, de la 0 la 9)
:
–> codul de tara (2 caractere alfabetice, majuscule) – pentru RomÃ¢nia este RO.

Algoritmul de validare al unui cod IBAN
Pas preliminar: In cazul Ã®n care codul IBAN este prezentat pe suport hartie, se converteste formatul acestuia la formatul electronic prin stergerea spatiilor de separare.
EXEMPLU: un cod IBAN de tipul RO49 AAAA 1B31 0075 9384 0000 devine RO49AAAA1B31007593840000.

Pasul 1: Se muta primele patru caractere (simbolizÃ¢nd codul de tara si caracterele de verificare) la dreapta codului IBAN.
EXEMPLU: RO49AAAA1B31007593840000 devine AAAA1B31007593840000RO49.

Pasul 2: Se face conversia literelor Ã®n numere, conform tabelei urmatoare :

A = 10		G = 16		M = 22		S = 28		Y = 34
B = 11		H = 17		N = 23		T = 29		Z = 35
C = 12		I = 18		O = 24		U = 30		
D = 13		J = 19		P = 25		V = 31		
E = 14		K = 20		Q = 26		W = 32		
F = 15		L = 21		R = 27		X = 33		
EXEMPLU: AAAA1B31007593840000RO49 devine 1010101011131007593840000272449

Pasul 3: Se aplica algoritmul MOD 97-10 (conform ISO 7064). Pentru ca cele 2 caractere de verificare sa fie corecte (codul IBAN sa fie corect), restul impartirii numarului astfel obtinut la 97 trebuie sa fie 1.
EXEMPLU: Restul impartirii lui 1010101011131007593840000272449 la 97 este 1.<br />
ISBN – International Standard Book Number
ISBN este un numar de inregistrare pentru carti,cu caracter international. El este eliberat de Biroul National ISBN si contine indicativul editurii care l-a achizitionat. Un numar ISBN este asociat unui singur titlu de carte si nu mai poate fi atribuit niciodata altui titlu.

Conceperea sistemului ISBN dateaza din anul 1965 si se datoreaza distribuitorului englez W.H. Smith & Son Ltd si Asociatiei Editorilor din Marea Britanie. Din anul 1970, Numarul Standard International al Cartii-ISBN a fost recunoscut international ca un sistem de identificare Ã®n domeniul cartii. Din anul 1989, sistemul de numerotare standardizata a cartilor ISBN a fost introdus si Ã®n RomÃ¢nia.

Un cod ISBN insoteste o publicatie monografica de la editarea sa si mai departe, in tot lantul de distributie. Codul ISBN se foloseste ca element cheie al sistemelor de inregistrare si inventar pentru editori, distribuitori, comercianti, biblioteci si alte organizatii.

Standardul ISO 2108 revizuit a fost publicat la inceputul anului 2005 si reprezinta prima schimbare aparuta in structura ISBN de la infiintarea acestui sistem. Noile prevederi ale standardului vor fi aplicate Ã®ncepÃ¢nd cu 1 ianuarie 2007. Pana la aceasta data va exista o perioada de tranzitie, cand se vor folosi Ã®n paralel ambele variante ale codului ISBN, atat ISBN-10 (ISBN format din 10 cifre) cat si ISBN-13 (ISBN format din 13 cifre). Prevederile standardului ISO 2108/2005 se aplica atat publicatiilor tiparite cat si celor in format electronic precum si tuturor celorlalte documente identificate prin cod ISBN.

Structura codului ISBN-10
Codul de 10 cifre este impartit in patru parti variabile ca lungime :

Prima parte : Grupul. Aceasta parte identifica locatia nationala sau geografica a editurii.
A doua parte : Editura. Reprezinta o anume editura in cadrul unei tari sau grupari.
A treia parte : Titlul. Aceasta parte identifica un anumit titlu sau editie al unui anumit editor.
A patra parte : Cifra de control. Aceasta este o singura cifra sau litera alfabetica X.
Structura codului ISBN-13
Codul ISBN-10 va fi prefixat cu 978 si i se va recalcula cifra de control. Dupa ce se vor epuiza toate codurile ISBN-10 , urmatoarele coduri ISBN-13 se vor prefixa cu 979.

Algoritmul de validare al unui cod ISBN – 13
Pasul preliminar: Se elimina spatiile si cratimele. Ultima cifra se ignora (este cifra de control).

Pasul 1: Se inmulteste fiecare cifra cu ponderea asociata ei. Ponderile se atribuie pentru fiecare cifra, incepand cu prima cifra, sub forma 1,3,1,3…

Ponderi	1	3	1	3	1	3	1	3	1	3	1	3	1
ISBN	9	7	8	0	9	0	1	6	9	0	6	6	1
Valori	9	21	8	0	9	0	1	18	9	0	6	18	1
Pasul 2: Se aduna valorile obtinute

Pasul 3: Se imparte suma obtinuta la 10 si se extrage restul (MODULO 10).

Pasul 4: Daca restul este 0 atunci cifra de control trebuie sa fie 0.Daca restul este diferit de 0, atunci se scade restul obtinut din 10. Rezultatul reprezinta cifra de control. Pentru un ISBN-13 valid cifra de control rezultata va trebui sa fie egala cu ultima cifra a codului (cifra 13).

Algoritmul de validare al unui cod ISBN – 10
Pasul preliminar: Se elimina spatiile si cratimele. Ultimul caracter se ignora (este caracterul de control).

Pasul 1: Se inmulteste fiecare cifra cu ponderea asociata ei. Ponderile se atribuie pentru fiecare cifra, incepand cu prima cifra, sub forma (11-pozitia cifrei)

Ponderi	10	9	8	7	6	5	4	3	2
ISBN	0	9	4	0	0	1	6	6	1
Valori	0	81	32	0	0	5	24	18	2
Pasul 2: Se aduna valorile obtinute

Pasul 3: Se imparte suma obtinuta la 11 si se extrage restul (MODULO 11).

Pasul 4: Daca restul este 0 atunci caracterul de control trebuie sa fie 0.Daca restul este 10 atunci caracterul de control este ‘X’. Daca restul este diferit de 0, atunci se scade restul obtinut din 11. Rezultatul reprezinta caracterul de control. Pentru un ISBN-10 valid caracterul de control rezultat va trebui sa fie egal cu ultimul caracter al codului (caracterul 10).

<br />
Cod de CARD
Exista doua mari categorii de carduri : cardul de credit si cardul de debit .

Cele doua mari tipuri de carduri sunt net diferite. Fiecare are avantaje specifice in functie de profilul utilizatorului. Aspectul important care le uneste, este menirea lor de instrumente de plata.

Cardurile de credit isi au originea in Statele Unite ale Americii in anii 1920. Atunci diferite companii, cum ar fi lanturile hoteliere si companiile de petrol, au inceput sa emita astfel de carduri clientilor lor pentru a efectua plata produselor oferite de ei. Aceasta tendinta a inceput sa se accentueze dupa Al Doilea Razboi Mondial.

Primul card de credit universal, care putea fi folosit ca metoda de plata la o varietate mare de magazine, a fost introdus deDiners Club in 1950.

Sistemul de numerotare adoptat pentru carduri este ANSI Standard X4.13-1983.

Structura unui cod de card
|S|BBB BB|NN NNNN NNN|C|
|_|____ __|___ _____ ____|_|
:             :                          :                       :
:             :                          :                       –> Cifra ce control
:             :                          :
:             :                          –> Numarul contului
:             :
:             –> Identificatorul emitentului
:
–> Tipul de card sau Major Industry Identifier (MII)

Major Industry Identifier
Prima cifra a unui cod de card este “Major Industry Identifier (MII)“, ceea ce reprezinta categoria emitentului:

0	ISO/TC 68 si alte industrii
1	Companii aeriene
2	Companii aeriene
3	Calatorii si agrement
4	Domeniu bancar and financiar
5	Domeniu bancar and financiar
6	Comert si domeniu bancar
7	Industrie petroliera
8	Telecomunicatii
9	Domeniul public
Spre examplu, American Express, Diner’s Club si Carte Blanche se incadreaza in categoria Calatorii si agrement, VISA, MasterCard si Discover sunt in categoria Domeniu bancar si financiar, iar SUN Oil si Exxon sunt in categoria Industrie petroliera.

Identificatorul emitentului
Primele 6 cifre din codul de card (inclusiv cifra MII) reprezinta identificatorul emitentului. Aceasta inseamna ca numarul total de posibili emitenti este de un milion.

Cei mai cunoscuti emitenti sunt :

Emitent	Identificator	Lungimea codului de card
Diner’s Club/Carte Blanche	300xxx-305xxx,36xxxx, 38xxxx	14
American Express	34xxxx, 37xxxx	15
VISA	4xxxxx	13,16
MasterCard	51xxxx-55xxxx	16
Discover	6011xx	16
JCB	2131xx,1800xxx	15,16
enRoute	2014xx,2149xx	15
Daca cifra MII este 9, atunci urmatoarele 3 cifre ale emitentului sunt codul tarii definit de ISO 3166, si urmatoarele doua cifre pot fi definite prin standarde nationale.

Numarul contului
Cifrele de la 7 la (n-1) din codul de card reprezinta identificatorul contului. Lungimea maxima a unui cod de card este de 19 cifre deci lungima maxima a numarului contului este de 12 cifre. Asta inseamna ca fiecare emitent dispune de un trilion de numere de cont posibile.

Cifra de control
Ultima cifra a codului de card reprezinta cifra de control. Algoritmul folosit pentru a verifica cifra de control se numesteAlgortimul Luhn, dupa numele omului de stiinta Hans Peter Luhn (1896-1964). El a primit premiul US Patent 2950048 (”Computer for Verifying Numbers”) pentru acest algoritm in anul 1960.

Algoritmul Luhn de validare al unui cod de card
Pas 1: Se inmulteste fiecare cifra din codul de card cu ponderea sa. Daca un card are un numar par de cifre, prima cifra are o pondere de 2, daca nu, cifra are o pondere de 1. Dupa aceea , ponderile cifrelor alterneaza 1,2,1,2.

Pas 2: Daca orice cifra are o valoare ponderata mai mare decat 9, se scade 9 din valoarea ei.

Pas 3: Se aduna toate valorile ponderate si se calculeaza restul impartirii la 10 (MODULO 10).

Pas 4: Un cod de card este valid daca rezultatul operatiei MODULO 10 este 0.<br />
NIF – Numere de Identificare Europene
In aceasta sectiune sunt prezentati algoritmii pentru validarea unor diverse coduri din statele uniunii europene. Aceste coduri pot fi coduri numerice personale, coduri de identificare fiscala, coduri de TVA etc.

TARA Format Exemplu

AT
Austria A(1)+N(1-7)+C(1)
A(1)={U} U12345675 S=N(1)+2#N(2)+N(3)+2#N(4)+N(5)+2#N(6)+N(7)
C(1)=10-(S+4)%10; daca C(1)=10, C(1)=0

BE
Belgia N(1-8)+C(1-2)
N(2)>1 1234567894 C(1-2)=97-N(1-7)%97

BG
Bulgaria N(1-9)+C(1)
if N(1)={2,3}, N(2-3)={22} 1234567892S=4*N(1)+3*N(2)+2*N(3)+7*N(4)+6*N(5)+5*N(6)+4*N(7)+3*N(8)+2*N(9)
C(1)=11-S%11; daca C(1)=11, C(1)=0; if C(1)=10, eronat

CY
Cipru N(1-8)+C(1)
N(1)={0,1,3,4,5,9} 12345678F N(1,3,5,7){0,1,2,3,4,5,6,7,8,9} → N(1,3,5,7){1,0,5,7,9,13,15,17,19,21}
S=N(1)+N(2)+N(3)+N(4)+N(5)+N(6)+N(7)+N(8)
C(1)=S%26
C{0-25} → C{A-Z}

CZ
Cehia Persoane juridice N(1-7)+C(1)
N(1)={0,1,2,3,4,5,6,7,8} 12345679 S=8*N(1)+7*N(2)+6*N(3)+5*N(4)+4*N(5)+3*N(6)+2*N(7)
C(1)=11-S%11; daca C(1)=10, C(1)=0; daca C(1)=11, C(1)=1 Cazuri speciale N(1-8)+C(1)
N(1)={6} 612345670 S=8*N(2)+7*N(3)+6*N(4)+5*N(5)+4*N(6)+3*N(7)+2*N(8)
C(1)=9-(11-S%11)%10 9 cifre – persoane fizice N(1-9)
N(1-2)={00-53,80-99}
N(3-4)={01-12,51-62}
daca N(3-4)={02,52} si N(1-2)%4>0, N(5-6)={01-28}
daca N(3-4)={02,52} si N(1-2)%4=0, N(5-6)={01-29}
daca N(3-4)={04,06,09,11,54,56,59,61}, N(5-6)={01-30}
daca N(3-4)={01,03,05,07,08,10,12,51,53,55,57,58,60,62}, N(5-6)={01-31} 991231123 10 cifre – persoane fizice N(1-10)
N(1-2)={54-99}
N(3-4)={01-12,51-62}
daca N(3-4)={02,52} si N(1-2)%4>0, N(5-6)={01-28}
daca N(3-4)={02,52} si N(1-2)%4=0, N(5-6)={01-29}
daca N(3-4)={04,06,09,11,54,56,59,61}, N(5-6)={01-30}
daca N(3-4)={01,03,05,07,08,10,12,51,53,55,57,58,60,62}, N(5-6)={01-31} 6306150004daca (N(1-2)+N(3-4)+N(5-6)+N(7-8)+N(9-10))%11=0 si N(1-10)%11=0, valid

DE
Germania N(1-8)+C(1)
N(1-8)>0 123456788 S=0
FOR I=1 TO 8
S=2*((N(I)+S+9)%10+1)%11
NEXT I
C(1)=11-S; daca C(1)=10, C(1)=0

DK
Danemarca N(1-8)
N(1)>0 12345674 S=2*N(1)+7*N(2)+6*N(3)+5*N(4)+4*N(5)+3*N(6)+2*N(7)+N(8)
daca S%11=0, valid

EE
Estonia N(1-8)+C(1) 123456780S=3*N(1)+7*N(2)+1*N(3)+3*N(4)+7*N(5)+1*N(6)+3*N(7)+7*N(8)
C(1)=10-S%10; daca C(1)=10, C(1)=0

ES
Spania Persoane juridice pro-profit A(1)+N(1-7)+C(1)
A(1)={A-H} A12345674 S=2#N(1)+N(2)+2#N(3)+N(4)+2#N(5)+N(6)+2#N(7)
C(1)=10-S%10; daca C=10, C=0 Persoane juridice non-profit A(1)+N(1-7)+C(1)
A(1)={N,P,Q,S} P1234567D S=2#N(1)+N(2)+2#N(3)+N(4)+2#N(5)+N(6)+2#N(7)
C(1)=10-S%10
C{1-10} → C{A-J} Persoane fizice N(1-8)+C(1) 12345678Z C(1)=1+N(1-8)%23
C{1-23} → C{T,R,W,A,G,M,Y,F,P,D,X,B,N,J,Z,S,Q,V,H,L,C,K,E} Persoane fizice straine, sub 14 ani sau ne-rezidenti A(1)+N(1-7)+C(1)
A(1)={K,L,M,X} K1234567L C(1)=1+N(1-7)%23
C{1-23} → C{T,R,W,A,G,M,Y,F,P,D,X,B,N,J,Z,S,Q,V,H,L,C,K,E}

FI
Finland N(1-7)+C(1) 12345671 S=7*N(1)+9*N(2)+10*N(3)+5*N(4)+8*N(5)+4*N(6)+2*N(7)
C(1)=11-S%11; daca C(1)=11, C(1)=0; if C(1)=10, eronat

FR
Franta Sistem vechi C(1-2)+N(1-9)
N(1-9)>0 32123456789 C(1-2)=(N(1-9)*100+12)%97 Sistem nou C(1-2)+N(1-9)
N(1-9)>0
C(1-2)={A-H,J-N,P-Z} | {0-9}
daca C(1) este alfanumeric, C(2) trebuie sa fie numeric si invers. 2H123456789 C{0-9,A-H,J-N,P-Z} → C{0-33}
daca C(1)<10, S=C(1)*24+C(2)-10
daca C(1)>9, S=C(1)*34+C(2)-100
X=S%11
S=S	+1
Y=(N(1-9)+S)%11
daca X=Y, valid

GB
Marea Britanie Departament guvernamental A(1-2)+N(1-3)
A(1-2)={GD}
N(1-3)<500 GD123 Ministerul sanatatii A(1-2)+N(1-3)
A(1-2)={HA}
N(1-3)>499 HA567 Standard N(1-9)
N(1-7)={0000001-0019999,1000000-9999999}
N(8-9)<97 123456782S=8*N(1)+7*N(2)+6*N(3)+5*N(4)+4*N(5)+3*N(6)+2*N(7)+10*N(8)+N(9)
daca S%97=0, valid Grup comercial N(1-10)
N(1-7)={0000001-0019999,1000000-9999999}
N(8-9)<97
N(10)={3} 1234567823S=8*N(1)+7*N(2)+6*N(3)+5*N(4)+4*N(5)+3*N(6)+2*N(7)+10*N(8)+N(9)
daca S%97=0, valid Islanda N(1-12)
N(1-3)={000,001}
N(4-10)={0000001-0019999,1000000-9999999}
N(11-12)<97 001123456782S=8*N(4)+7*N(5)+6*N(6)+5*N(7)+4*N(8)+3*N(9)+2*N(10)+10*N(11)+N(12)
daca S%97=0, valid Group comercial Islanda N(1-13)
N(1-3)={000,001}
N(4-10)={0000001-0019999,1000000-9999999}
N(11-12)<97
N(13)={3} 0011234567823S=8*N(4)+7*N(5)+6*N(6)+5*N(7)+4*N(8)+3*N(9)+2*N(10)+10*N(11)+N(12)
daca S%97=0, valid

GR
Grecia Conform normei ISO-3166-1 , prefixul GR corespunde Greciei dar Directive Europeana 2001/115, in urma cereri din partea Greciei, a schimbat prefixul in EL. Ambele pot fi folosite acum. Sistem de 7 cifre N(1-7)+C(1) 12345670S=128*N(1)+64*N(2)+32*N(3)+16*N(4)+8*N(5)+4*N(6)+2*N(7)
C(1)=S%11; daca C(1)=10, C(1)=0 Sistem de 8 cifre N(1-8)+C(1) 123456783S=256*N(1)+128*N(2)+64*N(3)+32*N(4)+16*N(5)+8*N(6)+4*N(7)+2*N(8)
C(1)=S%11; daca C(1)=10, C(1)=0

HU
Ungaria N(1-7)+C(1)
N(1)>0 12345676 S=9*N(1)+7*N(2)+3*N(3)+1*N(4)+9*N(5)+7*N(6)+3*N(7)
C(1)=10-S%10; daca C(1)=10, C(1)=0

IE
Irlanda Vechi N(1)+A(1)+N(2-6)+C(1)
N(1)>6
A(1)={A-Z,+,*} 7A12345J S=7*N(2)+6*N(3)+5*N(4)+4*N(5)+3*N(6)+2*N(1)
C(1)=S%23
C{0-22} → C{W,A-V} Nou N(1-7)+C(1)
N(1-7)>0 1234567T S=8*N(1)+7*N(2)+6*N(3)+5*N(4)+4*N(5)+3*N(6)+2*N(7)
C(1)=S%23
C{0-22} → C{W,A-V}

IT
Italia Codul fiscal italia pentru persoane fizice, aprobat prin decretul #13813 din 12/23/1976, nu este verificat deoarece nu este acceptat drept cod valid pentru operatiile intercomunitare legate de TVA N(1-10)+C(1)
N(1-7)>0
N(8-10)={1-100,120,121} 12345670017S=N(1)+2#N(2)+N(3)+2#N(4)+N(5)+2#N(6)+N(7)+2#N(8)+N(9)+2#N(10)
C(1)=10-S%10; daca C(1)=10, C(1)=0

LT
Lituania Persoane juridice N(1-8)+C(1)
N(8)={1} 123456715 S=1*N(1)+2*N(2)+3*N(3)+4*N(4)+5*N(5)+6*N(6)+7*N(7)+8*N(8)
daca S%11=10, S=3*N(1)+4*N(2)+5*N(3)+6*N(4)+7*N(5)+8*N(6)+9*N(7)+1*N(8)
C(1)=S%11; daca C(1)=10, C(1)=0 Platitori de taxe temporari si persoane fizice N(1-11)+C(1)
N(11)={1} 123456789011S=1*N(1)+2*N(2)+3*N(3)+4*N(4)+5*N(5)+6*N(6)+7*N(7)+8*N(8)+9*N(9)+1*N(10)+2*N(11)
daca S%11=10, S=3*N(1)+4*N(2)+5*N(3)+6*N(4)+7*N(5)+8*N(6)+9*N(7)+1*N(8)+2*N(9)+3*N(10)+4*N(11)
C(1)=S%11; daca C(1)=10, C(1)=0

LU
Lubembourg N(1-6)+C(1-2)
N(1-6)>0 12345613 C(1-2)=N(1-6)%89

LV
Letonia Persoane juridice N(1-10)+C(1)
N(1)={4,5,6,7,8,9} 41234567891S=9*N(1)+1*N(2)+4*N(3)+8*N(4)+3*N(5)+10*N(6)+2*N(7)+5*N(8)+7*N(9)+6*N(10)
daca S%11=4 si N(1)=9, S=S-45
daca S%11=4, C(1)=4-S%11
daca S%11>4, C(1)=14-S%11
daca S%11<4, C(1)=3-S%11 Persoane fizice N(1-11)
daca N(3-4)={02} si N(5-6)%4>0, N(1-2)={01-28}
daca N(3-4)={02} si N(5-6)%4=0, N(1-2)={01-29}
daca N(3-4)={04,06,09,11}, N(1-2)={01-30}
daca N(3-4)={01,03,05,07,08,10,12}, N(1-2)={01-31}
N(3-4)={01-12} 15066312345

MT
Malta N(1-6)+C(1-2)
N(1-6)>100000 12345634 S=3*N(1)+4*N(2)+6*N(3)+7*N(4)+8*N(5)+9*N(6)
C(1-2)=37-S%37 NL
Olanda N(1-8)+C(1)+A(1)+N(9-10)
N(1-8)>0
A(1)={B} 123456782B90 S=9*N(1)+8*N(2)+7*N(3)+6*N(4)+5*N(5)+4*N(6)+3*N(7)+2*N(8)
C(1)=S%11; daca C(1)=10, eronat

PL
Polonia N(1-9)+C(1) 1234567883S=6*N(1)+5*N(2)+7*N(3)+2*N(4)+3*N(5)+4*N(6)+5*N(7)+6*N(8)+7*N(9)
C(1)=S%11; daca C(1)=10, eronat

PT
Portugalia N(1-8)+C(1)
N(1)>0 123456789 S=9*N(1)+8*N(2)+7*N(3)+6*N(4)+5*N(5)+4*N(6)+3*N(7)+2*N(8)
C(1)=11-S%11; daca C(1)=10, C(1)=0; daca C(1)=11, C(1)=0

RO
Romania Persoane juridice N(1-9)+C(1) 1234567897S=7*N(1)+5*N(2)+3*N(3)+2*N(4)+1*N(5)+7*N(6)+5*N(7)+3*N(8)+2*N(9)
C(1)=S*10%11; daca C(1)=10, C(1)=0 Persoane fizice N(1-12)+C(1)
N(1)={1,2,3,4,6}
N(4-5)={01-12}
daca N(4-5)={02} si N(2-3)%4>0, N(6-7)={01-28}
daca N(4-5)={02} si N(2-3)%4=0, N(6-7)={01-29}
daca N(4-5)={04,06,09,11}, N(6-7)={01-30}
daca N(4-5)={01,03,05,07,08,10,12}, N(6-7)={01-31} 1630615123457S=2*N(1)+7*N(2)+9*N(3)+1*N(4)+4*N(5)+6*N(6)+3*N(7)+5*N(8)+8*N(9)+2*N(10)+7*N(11)+9*N(12)
C(1)=S%11; daca C(1)=10, C(1)=1

SE
Suedia N(1-9)+C(1)+N(10-11)
N(10-11)>0 123456789701 S=2#N(1)+N(2)+2#N(3)+N(4)+2#N(5)+N(6)+2#N(7)+N(8)+2#N(9)
C(1)=10-S%10; daca C(1)=10, C(1)=0

SI
Slovenia N(1-7)+C(1)
N(1-7)>999999 12345679 S=8*N(1)+7*N(2)+6*N(3)+5*N(4)+4*N(5)+3*N(6)+2*N(7)
C(1)=11-S%11; daca C(1)=10, C(1)=0; daca C(1)=11, C(1)=1

SK
Slovacia Pentru persoanele nascute in anul 2000, numarul de identitate si platitorii de taxe nu pot fi diferentiati. Numar de identitate N(1-9)+C(1)
N(1-2)={00} 0012345675 S=8*N(3)+7*N(4)+6*N(5)+5*N(6)+4*N(7)+3*N(8)+2*N(9)
C(1)=11-S%11; daca C(1)=10, C(1)=0; daca C(1)=11, C(1)=1 Platitori de taxe N(1-10)
N(1-2)={00} 0012345678 Persoane fizice (nascute inainte de 1/1/1954) N(1-9)
N(1-2)={00-53}
N(3-4)={01-12,51-62}
daca N(3-4)={02,52} si N(1-2)%4>0, N(5-6)={01-28}
daca N(3-4)={02,52} si N(1-2)%4=0, N(5-6)={01-29}
daca N(3-4)={04,06,09,11,54,56,59,61}, N(5-6)={01-30}
daca N(3-4)={01,03,05,07,08,10,12,51,53,55,57,58,60,62}, N(5-6)={01-31} 531231123Persoane fizice (nascute dupa 31/12/1953) N(1-10)
N(1-2)={54-99}
N(3-4)={01-12,51-62}
daca N(3-4)={02,52} si N(1-2)%4>0, N(5-6)={01-28}
daca N(3-4)={02,52} si N(1-2)%4=0, N(5-6)={01-29}
daca N(3-4)={04,06,09,11,54,56,59,61}, N(5-6)={01-30}
daca N(3-4)={01,03,05,07,08,10,12,51,53,55,57,58,60,62}, N(5-6)={01-31} 6306151234

Notatii

X+Y : X adunat cu Y.

X-Y : X scazut din Y.

X*Y : X inmultit cu Y.

X#Y : X inmultit Y si cifrele rezultatului adunate. Spre examplu, 2*6=12, 1+2=3, apoi, 2#6=3.

X/Y : X impartit la Y.

X\Y : impartire intreaga a lui X la Y. Spre exemple, 15/6=2 si rest 3, adica, 15\6=2.

X%Y : restul impartirii intregi a lui X la Y (MODULO). Spre examplu, 15/6=2 si rest 3 , adica, 15%6=3.

X{a-b} → X{c-d} : transformarea elementelor a-b in corespondenti lor c-d. Spre exemplu X{1-3} → X{a-c}, convertit 1 in a, 2 in b si 3 in c.

In celula Format, formatul este specificat inaintea conditiilor pentru validare. Numerele se identifica prin “N” urmate de un interval de numere intre paranteze; caracterele alfanumerice, prin “A” urmate de un interval de caractere intre paranteze, si caracterele de control cu “C” urmate de un interval, in care se poate situa caracterul , intre paranteze.]]>
        </description>
        <link>http://www.edline.eu/articole/algoritmi-de-verificare-pentru-cnp-cif-iban-isbn-card-bancar-nif.html</link>
        <docs>http://blogs.law.harvard.edu/tech/rss</docs>
        <lastBuildDate>Mon, 6 Dec 2010 09:22:20 +0200</lastBuildDate>
        <pubDate>Mon, 6 Dec 2010 09:22:15 +0200</pubDate>
        <generator>FeedForAll v2.0 (2.0.3.1) unlicensed version http://www.feedforall.com</generator>
        <item>
            <title>(untitled)</title>
            <guid isPermaLink="false">C88B5388-5B69-4992-8BB0-44318FF106F1</guid>
            <pubDate>Mon, 6 Dec 2010 09:20:05 +0200</pubDate>
        </item>
    </channel>
</rss>

