Generator și Validator IBAN - Testare Date Bancare
Generați IBAN-uri de test valide sau validați imediat IBAN-uri existente. Suportă 10 țări europene cu validare MOD 97. Perfect pentru testarea și dezvoltarea software-ului financiar.
Generator și Validator IBAN
Documentație
Generator și Validator IBAN
Ce Face Această Unealtă
Testezi software financiar fără date reale de cont bancar? Vei avea nevoie de formate IBAN valide care trec de verificări. Această unealtă generează IBAN-uri aleatorii care respectă formatele specifice țărilor și validează IBAN-urile existente folosind standardul ISO 13616.
Iată problema practică pe care o rezolvă: atunci când construiești sisteme de plăți sau aplicații bancare, ai nevoie de date de test care să nu eșueze la validare, dar care să nu rişte expunerea numerelor de cont reale. O greșeală obișnuită pe care o fac developerii este crearea de IBAN-uri "false" care nu trec de algoritmul de verificare MOD 97, cauzând eșecul testelor din motive greșite.
Unealta îndeplinește două sarcini de bază:
- Generator: Creează IBAN-uri structural valide pentru orice țară acceptată. Fiecare număr generat trece de aceleași verificări pe care le va rula sistemul de producție.
- Validator: Verifică structura IBAN, cifrele de control și formatarea specifică țării. Util pentru depanarea motivelor pentru care un IBAN este respins.
IBAN-urile (Numere Internaționale de Cont Bancar) standardizează modul în care băncile identifică conturile peste granițe. Fiecare conține un cod de țară, două cifre de control calculate prin MOD 97 și un Număr de Cont Bancar de Bază (BBAN) care variază în funcție de țară. Ceea ce face acest lucru complicat este că Germania folosește 22 de caractere, în timp ce Franța are nevoie de 27, iar structura internă diferă complet.
Cum Funcționează IBAN-urile
Structura și Formatul IBAN
IBAN-urile pot avea până la 34 de caractere alfanumerice, deși cele mai multe țări europene folosesc 22-27. Fiecare IBAN se defalcă în trei părți:
- Codul Țării: Două litere din standardul ISO 3166-1 alpha-2 (DE pentru Germania, GB pentru Regatul Unit)
- Cifre de Verificare: Două cifre calculate care validează întregul IBAN folosind MOD 97
- Numărul de Cont Bancar de Bază (BBAN): Porțiunea specifică țării care conține:
- Identificator bancar (uneori denumit număr de rutare sau cod bancar)
- Identificator de filială (în UK se numește sort code)
- Număr de cont
- Uneori cifre naționale suplimentare de verificare
Luăm un IBAN german ca exemplu. Modelul DE2!n8!n10!n înseamnă:
DE= codul țării2!n= două cifre de verificare numerice8!n= cod bancar de opt cifre (Bankleitzahl)10!n= număr de cont de zece cifre (Kontonummer)
Ceea ce îi surprinde pe oameni este cât de mult variază aceste formate între țări:
| Țara | Lungime | Structură | Exemplu |
|---|---|---|---|
| Germania (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| Regatul Unit (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| Franța (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| Spania (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| Italia (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
Algoritmul de Validare IBAN
Validarea IBAN se bazează pe algoritmul MOD 97 definit în ISO 7064. Iată ce se întâmplă de fapt atunci când validați un IBAN:
- Mutați primele patru caractere (codul țării și cifrele de verificare) la final
- Înlocuiți fiecare literă cu numere: A=10, B=11, până la Z=35
- Calculați modulo 97 al șirului de numere rezultat
- IBAN-urile valide produc întotdeauna un rest exact de 1
Matematic:
De ce MOD 97 în mod specific? Prinde aproape toate erorile comune: greșeli de cifre unice, cifre interschimbate, chiar și cele mai multe erori de introducere care implică caractere asemănătoare. În practică, am constatat că prinde aproximativ 99,9% din erorile accidentale de introducere a datelor, motiv pentru care a devenit standardul internațional.
O ciudățenie care merită știută: atunci când generați IBAN-uri, calculați cifrele de verificare pornind de la "00", rulând algoritmul, apoi folosind 98 minus restul. Acest lucru asigură faptul că IBAN-ul final va fi validat corect.
Caracteristici Instrument
Generator IBAN
Generează IBANuri de test care trec de validare fără a folosi numere de cont reale:
- Selecție Țară: Suportă 10 țări europene principale (Germania, Regatul Unit, Franța, Spania, Italia, Țările de Jos, Elveția, Austria, Belgia, Polonia)
- Conformitate Format: Fiecare IBAN generat corespunde structurii oficiale a țării și trece de validarea MOD 97
- Generare cu Un Singur Clic: Fără configurație necesară—doar selectați o țară și generați
- Copiere în Clipboard: Un singur clic copiază întregul IBAN pentru lipire în teste
- Defalcare Vizuală: Afișare color-codată care arată separat codul țării, cifrele de control și detaliile bancare
Procesul de generare:
- Alege șablonul de format specific țării
- Completează cifre/litere aleatoare în porțiunea BBAN
- Calculează cifrele de control folosind MOD 97
- Asamblează și validează IBAN-ul complet
Sfat profesional: La popularea bazelor de date de test, generați IBANuri din mai multe țări pentru a testa scenarii transfrontaliere. Sistemele de plăți reale au adesea cazuri limită specifice anumitor țări.
Validator IBAN
Verifică structura IBAN și prinde problemele de formatare înainte de a ajunge în producție:
- Verificare Format: Verifică cerințele de lungime și structură specifice țării
- Validare MOD 97: Rulează algoritmul complet de verificare a cifrelor de control
- Defalcare Componentă: Arată exact cum se împarte IBAN-ul în cod țară, cifre de control, cod bancă și număr de cont
- Mesaje de Eroare Specifice: În loc de mesaje generice "invalid", veți vedea ce anume nu este în regulă
- Auto-formatare: Gestionează IBANuri cu sau fără spații—formatarea se face automat
Verificările de validare rulează în ordine:
- Recunoaștere cod țară (este suportat?)
- Verificare lungime (număr corect de caractere pentru țara respectivă?)
- Validare tip caracter (numere unde este de așteptat, litere unde sunt permise)
- Calcul cifre de control MOD 97 (matematica funcționează?)
Scenariu comun: API-ul dvs. primește un IBAN din introducerea utilizatorului cu spațiere inconsistentă. Utilizați validatorul pentru a-l normaliza înainte de procesare—elimină automat spațiile și vă arată formatul corect.
Ghid pas cu pas
Generarea unui IBAN
- Accesarea Filei Generator: Faceți clic pe fila "Generator" (selectată în mod implicit)
- Selectarea unei Țări: Alegeți țara dorită din meniul derulant
- Generarea IBAN-ului: Faceți clic pe butonul "Generare IBAN"
- Vizualizarea Rezultatului: IBAN-ul generat va apărea mai jos, cu o defalcare vizuală a componentelor sale
- Copiere în Clipboard: Faceți clic pe butonul "Copiere în clipboard" pentru a copia IBAN-ul pentru utilizare în altă parte
Validarea unui IBAN
- Accesarea Filei Validator: Faceți clic pe fila "Validator"
- Introducerea unui IBAN: Tastați sau lipiți un IBAN în câmpul de introducere
- Spațiile și formatarea vor fi gestionate automat
- Instrumentul acceptă IBAN-uri formatate (cu spații) și neformatate
- Vizualizarea Rezultatelor Validării: Instrumentul va valida automat IBAN-ul în timp ce tastați
- Verificarea Detaliilor: Pentru IBAN-uri valide, va fi afișată o defalcare a componentelor
- Revizuirea Erorilor: Pentru IBAN-uri nevalide, vor fi afișate mesaje de eroare specifice care să ajute la identificarea problemei
Cazuri de Utilizare și Aplicații din Lumea Reală
Dezvoltare Software și Testare
Testare API: Atunci când construiți teste de integrare a plăților, aveți nevoie de IBAN-uri care trec de validare, dar nu declanșează tranzacții reale. Generați un lot de IBAN-uri de test pentru suita dvs. de teste automate, asigurându-vă că gestionarea erorilor funcționează corect pentru diferite formate de țări.
Validare Formular: Testați un flux de checkout? Utilizați validatorul pentru a verifica dacă validarea frontend-ului corespunde cerințelor backend. O problemă frecventă este acceptarea unui format IBAN pe care procesatorul de plăți îl va respinge ulterior - depistarea acesteia în timpul dezvoltării economisește frustrarea clienților.
Testare Cazuri Limită: Cei mai mulți dezvoltatori testează cu unul sau două formate de țări. Ce se întâmplă atunci când un client elvețian cu un IBAN de 21 de caractere utilizează sistemul dvs. proiectat pentru IBAN-uri germane de 22 de caractere? Generați diverse formate de țări pentru a testa la limită lungimile câmpurilor și logica de validare.
Testare Regresie: După actualizarea bibliotecii de validare IBAN, rulați IBAN-uri generate de test prin versiunile vechi și noi. Orice discrepanțe indică modificări care pot afecta producția.
Dezvoltare Aplicații Financiare
Sisteme de Plăți: Atunci când construiți funcționalitate de transfer internațional, veți întâlni scenarii în care structura IBAN-ului determină comportamentul de rutare. IBAN-urile din Țările de Jos (care includ litere în BBAN) pot expune erori pe care IBAN-urile germane pur numerice nu le vor depista.
Software Bancar: Parsarea IBAN-urilor pentru a extrage coduri bancare și identificatori de filiale necesită logică specifică țării. Generați IBAN-uri pentru fiecare țară acceptată pentru a verifica dacă algoritmul dvs. de parsare identifică corect aceste componente.
Verificare Conformitate: Reglementările financiare solicită adesea validarea IBAN-urilor înainte de procesare. Utilizați acest instrument pentru a crea cazuri de test care dovedesc că sistemul dvs. respinge cifre de control incorecte și formate greșite - esențial pentru urmele de audit.
Educație și Documentație
Educație Standarde Bancare: Studenții care învață despre sistemele internaționale de plăți beneficiază de vizualizarea structurilor IBAN reale. Generați exemple din mai multe țări pentru a ilustra modul în care standardizarea funcționează în diferite sisteme bancare.
Documentație API: În loc să utilizați IBAN-uri potențial reale în documentația tehnică, generați exemple curate. Documentația cu fraze precum "Utilizați IBAN DE89370400440532013000 pentru testare" indică imediat dezvoltatorilor că sunt valori sigure de test.
Operațiuni de Date
Populare Bază de Date: Mediile de dezvoltare și staging au nevoie de date de test realiste. Generați IBAN-uri diverse pentru a popula baza de date cu profiluri de clienți internaționale reprezentative fără probleme de confidențialitate.
Anonimizare Date: Migrați din producție în staging? Înlocuiți IBAN-urile reale cu unele generate care mențin validitatea formatului pentru testare, eliminând în același timp informațiile sensibile. Critic pentru conformitatea GDPR în mediile de dezvoltare.
Alternative și Când să Le Utilizați
Diferite instrumente se potrivesc diferitelor nevoi. Iată o comparație onestă:
API-uri Bancare Comerciale (de ex., Stripe, Adyen)
Cele mai bune pentru validarea în producție împotriva registrelor bancare reale. Aceste servicii verifică dacă un IBAN corespunde unui cont activ real, nu doar dacă formatul este corect.
Utilizați atunci când: Aveți nevoie să verificați că un IBAN există și poate primi plăți, nu doar că este structural valid.
Limitări: Costă bani (de obicei prețuire per apel API), necesită efort de integrare și tot aveți nevoie de IBANuri de test pentru dezvoltare - și aici intervine acest instrument.
Biblioteci de Limbaje de Programare (ibantools, iban.js, python-stdnum)
Cele mai bune pentru validare încorporată în codul aplicației. Biblioteci precum ibantools pentru JavaScript sau python-stdnum pentru Python oferă atât funcții de validare, cât și de generare.
Utilizați atunci când: Aveți nevoie de acces programatic ca parte a validării de build sau de rulare.
Limitări: Necesită efort de dezvoltare pentru integrare și tot aveți nevoie de o modalitate rapidă de a testa manual anumite IBANuri în timpul depanării. Acolo unde un instrument web este mai rapid decât scrierea de scripturi de test.
Registrul SWIFT IBAN
Registrul oficial IBAN întreținut de SWIFT listează toate formatele și regulile de validare pentru țări. Este sursa autorizată.
Utilizați atunci când: Implementați suport IBAN de la zero și aveți nevoie de specificațiile oficiale.
Limitări: Este documentație, nu un instrument. Ar trebui să construiți sau să găsiți ceva pentru a genera și valida efectiv IBANuri bazate pe acele specificații.
Validatori Bancari Oficiali
Multe bănci naționale oferă validatori specifici țării (de ex., Bundesbank pentru IBANuri germane). Aceștia sunt extrem de precis pentru țara lor specifică.
Utilizați atunci când: Lucrați doar cu o singură țară și aveți nevoie de detalii de validare la nivel de bancă.
Limitări: Focus pe o singură țară. Dacă construiți sisteme de plăți internaționale, ați avea nevoie de validatori pentru fiecare țară.
Când Are Sens Acest Instrument
Utilizați acest instrument atunci când aveți nevoie de testare rapidă, fără integrare API. Este deosebit de util în timpul dezvoltării și depanării când aveți nevoie să generați imediat date de test valide sau să verificați de ce un anumit IBAN nu trece validarea. Nu va înlocui bibliotecile de validare de nivel de producție din baza de cod, dar este mai rapid decât scrierea de scripturi de test aruncabile.
Întrebări frecvente
Ce este un IBAN și de ce contează?
IBAN înseamnă Număr Internațional de Cont Bancar - un format standardizat creat de Organizația Internațională de Standardizare (ISO) pentru a reduce erorile în plățile transfrontaliere. Înainte de IBAN, fiecare țară folosea propriul format de număr de cont, ceea ce ducea la greșeli frecvente și transferuri eșuate. IBAN-urile adaugă coduri de țară și cifre de control pentru a prinde erorile înainte de mișcarea banilor.
Cât de precise sunt IBAN-urile generate?
IBAN-urile generate sunt matematic corecte și trec algoritmul de validare MOD 97 definit în ISO 13616. Ele urmează structuri specifice fiecărei țări. Cu toate acestea, sunt create aleatoriu și nu corespund unor conturi bancare reale - asta este ideea. Sunt sigure pentru testare tocmai pentru că nu vor lovi accidental un cont real.
Ce țări sunt susținute de acest instrument?
În prezent 10 țări europene: Germania, Regatul Unit, Franța, Spania, Italia, Țările de Jos, Elveția, Austria, Belgia și Polonia. Acestea acoperă cele mai comune formate IBAN pe care le veți întâlni în sistemele de plăți europene. Aveți nevoie de altă țară? Formularul de feedback este cea mai bună modalitate de a solicita adăugări.
Pot folosi IBAN-urile generate pentru transferuri de bani reale?
Absolut nu. Acestea sunt doar IBAN-uri de test. Ele trec de validarea formatului, dar nu sunt conectate la conturi bancare reale. Utilizarea lor pentru tranzacții reale va duce la eșecuri sau respingeri de plată. Sunt destinate doar pentru dezvoltare, testare și scopuri educaționale.
Cum funcționează de fapt validarea IBAN?
Validatorul rulează patru verificări în secvență:
- Cod de țară: Este un cod de două litere recunoscut?
- Lungime: Corespunde lungimii necesare pentru acea țară? (Germania = 22, UK = 22, Franța = 27, etc.)
- Tipuri de caractere: Sunt literele și numerele în pozițiile corecte bazate pe formatul țării?
- Verificare MOD 97: Suma de control matematică este egală cu 1 conform ISO 7064?
Dacă vreuna dintre verificări eșuează, veți vedea un mesaj de eroare specific care explică ce este greșit.
Contează spațiile în IBAN?
Nu pentru validare. IBAN-urile sunt afișate tipic cu spații (grupuri de patru) pentru lizibilitate, dar spațiile sunt cosmetice. DE89 3704 0044 0532 0130 00 și DE89370400440532013000 sunt identice pentru validare. Instrumentul gestionează automat ambele formate.
Sunt datele mele trimise pe un server sau stocate undeva?
Nu. Totul rulează în browser folosind JavaScript. Niciun fel de date IBAN nu părăsesc mașina dvs., nu ating un server și nu sunt stocate nicăieri. Puteți verifica acest lucru deschizând uneltele de dezvoltator ale browserului și urmărind fila de rețea - nu veți vedea nicio solicitare atunci când generați sau validați IBAN-uri.
Și dacă am nevoie să validez un IBAN dintr-o țară care nu este listată?
Instrumentul suportă momentan doar cele 10 țări din meniu. Adăugarea altora necesită implementarea regulilor specifice de format pentru fiecare țară. Dacă aveți nevoie de validare pentru țări precum Norvegia, Suedia sau altele, anunțați-ne prin formularul de feedback - prioritizăm adăugările în funcție de cerere.
De ce un IBAN corect formatat ar putea eșua la validare?
Cele mai comune motive:
- Cifre de control incorecte: Chiar și o singură cifră greșită eșuează testul MOD 97
- Greșeli de tastare: Caractere transpuse sau cifre greșite oriunde în IBAN
- Lungime incorectă: Caractere lipsă sau în plus pentru acea țară
- Caractere nevalide: Litere unde sunt permise doar numere, sau invers
- Țară neacoperită: Codul de țară există, dar nu este în lista noastră de susținute
Mesajul de eroare vă va spune specific ce este greșit.
Cum pot raporta erori sau solicita caracteristici?
Utilizați formularul de feedback de la baza paginii. Rapoartele de erori specifice cu exemple de IBAN-uri sunt cele mai utile. Pentru solicitări de caracteristici, explicarea cazului dvs. de utilizare ajută la prioritizarea a ceea ce urmează să fie construit.
Care este diferența dintre IBAN și codurile SWIFT/BIC?
IBAN-urile identifică conturi bancare specifice, în timp ce codurile SWIFT/BIC identifică bănci sau filiale bancare. Gândiți-vă astfel: codul SWIFT vă spune care bancă, IBAN-ul vă spune care cont la acea bancă. Pentru transferuri internaționale, aveți nevoie adesea de ambele - codul SWIFT rutează către banca corectă, apoi IBAN-ul rutează către contul specific.
Pot valida un IBAN fără să cunosc țara?
Da, pentru că primele două litere ale oricărui IBAN sunt codul de țară. Validatorul citește primele două caractere pentru a determina ce format de țară să aplice. De aceea detectarea țării se întâmplă automat atunci când lipiți un IBAN - nu este nevoie să selectați manual țara.
Există formate IBAN pentru țări din afara Europei?
Da, dar mai puține. Deși IBAN a apărut în Europa și are cea mai mare adoptare acolo, țări precum Arabia Saudită, EAU, Brazilia și altele l-au adoptat. Acest instrument se concentrează momentan pe formatele europene, deoarece reprezintă marea majoritate a tranzacțiilor transfrontaliere. Registrul SWIFT IBAN menține lista completă.
Cum să Citești și să Decodezi un IBAN
V-ați întrebat vreodată ce înseamnă fiecare parte dintr-un IBAN precum DE89370400440532013000? Iată cum să decodați orice IBAN:
Pasul 1: Codul Țării (Primele 2 caractere)
DE= Germania- Indică regulile de format ale țării respective
Pasul 2: Cifre de Verificare (Următoarele 2 caractere)
89= sumă de control calculată- Aceste cifre verifică validitatea întregului IBAN folosind MOD 97
Pasul 3: Codul Băncii (Variază în funcție de țară)
37040044în IBANurile germane = identificator de bancă pe 8 cifre- Diferite țări folosesc lungimi diferite (Marea Britanie folosește 4 caractere)
Pasul 4: Numărul Contului (Caracterele rămase)
0532013000= numărul efectiv de cont la banca respectivă- Lungimea și formatul depind de țară
Diferite țări organizează diferit porțiunea BBAN. IBANurile din Marea Britanie includ un cod de sortare pe 6 cifre (identificator de sucursală) între codul băncii și numărul contului. IBANurile franceze combină codul băncii, codul sucursalei și numărul contului cu o cheie de verificare. Înțelegerea acestor diferențe este crucială atunci când se procesează programatic IBANuri.
Erori comune de validare IBAN și cum să le rezolvi
Atunci când implementezi validarea IBAN, vei întâlni în mod repetat aceste probleme:
Eroare de "Cifre de control invalide"
Cauză: Calculul MOD 97 nu este egal cu 1. Fie cifrele de control sunt greșite, fie există o altă eroare în IBAN.
Rezolvare: Rulează validarea din nou după corectarea oricăror greșeli de tastare. Chiar și un singur caracter greșit oriunde în IBAN cauzează eșecul cifrei de control. Acest lucru este intenționat—pentru a prinde erorile de introducere a datelor.
Eroare de "Lungime incorectă pentru țară"
Cauză: IBAN-ul are prea multe sau prea puține caractere pentru codul său de țară.
Rezolvare: Verifică dacă codul țării corespunde țării intenționate. IBAN-urile germane au întotdeauna 22 de caractere, IBAN-urile din Marea Britanie sunt 22, cele franceze sunt 27. Caracterele lipsă sau în plus indică o trunchiere sau date incorecte.
Eroare de "Caractere invalide"
Cauză: Caractere care nu ar trebui să apară în acea poziție—precum litere acolo unde sunt permise doar numere.
Rezolvare: Verifică formatul specific țării. De exemplu, IBAN-urile germane sunt complet numerice după codul de țară și cifrele de control, în timp ce IBAN-urile din Marea Britanie includ 4 litere pentru codul băncii.
Eroare de "Cod de țară neacceptat"
Cauză: Primele două litere nu sunt un cod de țară recuoscut, sau nu sunt acceptate de validatorul tău.
Rezolvare: Verifică ortografia codului de țară. Greșeli comune includ utilizarea UK în loc de GB, sau EN în loc de coduri de țară. Acest instrument acceptă 10 țări europene; validatorii de producție ar trebui să accepte toate țările din registrul SWIFT.
Format vs. Existență Cont
O distincție importantă: validarea confirmă că un IBAN este corect din punct de vedere structural, nu că acel cont există. Un IBAN poate trece toate verificările de validare, dar tot să nu corespundă unui cont bancar real. Pentru sistemele de plăți de producție, aveți nevoie de verificări suplimentare dincolo de validarea formatului.
Implementare Tehnică pentru Developeri
Dacă construiți suport pentru IBAN în aplicația dumneavoastră, iată exemple de cod testate în mai multe limbaje. Aceste implementări tratează cazurile speciale cu care vă veți confrunta în producție:
Validare IBAN
1function validateIban(iban) {
2 // Elimină spațiile și convertește la majuscule
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Verifică formatul de bază
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Rearanjează și convertește literele în numere
11 const rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
12 const converted = rearranged.split('').map(char => {
13 if (/[A-Z]/.test(char)) {
14 return (char.charCodeAt(0) - 55).toString();
15 }
16 return char;
17 }).join('');
18
19 // Calculează mod 97
20 let remainder = 0;
21 for (let i = 0; i < converted.length; i++) {
22 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
23 }
24
25 return remainder === 1;
26}
27
28// Exemplu de utilizare
29console.log(validateIban('DE89 3704 0044 0532 0130 00')); // true
30console.log(validateIban('GB29 NWBK 6016 1331 9268 19')); // true
31console.log(validateIban('DE89 3704 0044 0532 0130 01')); // false (cifre de control invalide)
321def validate_iban(iban):
2 # Elimină spațiile și convertește la majuscule
3 iban = iban.replace(' ', '').upper()
4
5 # Verificare format de bază
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Mută primele 4 caractere la final
10 rearranged = iban[4:] + iban[:4]
11
12 # Convertește literele în numere (A=10, B=11, ..., Z=35)
13 converted = ''
14 for char in rearranged:
15 if char.isalpha():
16 converted += str(ord(char) - 55)
17 else:
18 converted += char
19
20 # Verifică dacă mod 97 este egal cu 1
21 return int(converted) % 97 == 1
22
23# Exemplu de utilizare
24print(validate_iban('DE89 3704 0044 0532 0130 00')) # True
25print(validate_iban('GB29 NWBK 6016 1331 9268 19')) # True
26print(validate_iban('DE89 3704 0044 0532 0130 01')) # False (cifre de control invalide)
271public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Elimină spațiile și convertește la majuscule
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Verificare format de bază
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Mută primele 4 caractere la final
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Convertește literele în numere
15 StringBuilder converted = new StringBuilder();
16 for (char c : rearranged.toCharArray()) {
17 if (Character.isLetter(c)) {
18 converted.append(c - 'A' + 10);
19 } else {
20 converted.append(c);
21 }
22 }
23
24 // Calculează mod 97
25 BigInteger numeric = new BigInteger(converted.toString());
26 return numeric.mod(BigInteger.valueOf(97)).intValue() == 1;
27 }
28
29 public static void main(String[] args) {
30 System.out.println(validateIban("DE89 3704 0044 0532 0130 00")); // true
31 System.out.println(validateIban("GB29 NWBK 6016 1331 9268 19")); // true
32 System.out.println(validateIban("DE89 3704 0044 0532 0130 01")); // false
33 }
34}
35Generare IBAN
1function generateIban(countryCode) {
2 const countryFormats = {
3 'DE': { length: 22, bbanPattern: '8n10n' },
4 'GB': { length: 22, bbanPattern: '4a6n8n' },
5 'FR': { length: 27, bbanPattern: '5n5n11c2n' }
6 // Adaugă mai multe țări după necesitate
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Codul țării ${countryCode} nu este suportat`);
11 }
12
13 // Generează BBAN aleator bazat pe model de țară
14 let bban = '';
15 const pattern = countryFormats[countryCode].bbanPattern;
16 let i = 0;
17
18 while (i < pattern.length) {
19 const count = parseInt(pattern.substring(i + 1), 10);
20 const type = pattern[i];
21
22 if (type === 'n') {
23 // Generează caractere numerice
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Generează caractere alfabetice
29 for (let j = 0; j < count; j++) {
30 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
31 }
32 } else if (type === 'c') {
33 // Generează caractere alfanumerice
34 for (let j = 0; j < count; j++) {
35 const isLetter = Math.random() > 0.5;
36 if (isLetter) {
37 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
38 } else {
39 bban += Math.floor(Math.random() * 10);
40 }
41 }
42 }
43
44 i += 2;
45 }
46
47 // Calculează cifrele de control
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Creează IBAN inițial cu '00' ca și cifre de control
55 const initialIban = countryCode + '00' + bban;
56
57 // Rearanjează și convertește literele în numere
58 const rearranged = bban + countryCode + '00';
59 const converted = rearranged.split('').map(char => {
60 if (/[A-Z]/.test(char)) {
61 return (char.charCodeAt(0) - 55).toString();
62 }
63 return char;
64 }).join('');
65
66 // Calculează 98 minus mod 97
67 let remainder = 0;
68 for (let i = 0; i < converted.length; i++) {
69 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
70 }
71
72 const checkDigits = (98 - remainder).toString().padStart(2, '0');
73 return checkDigits;
74}
75
76// Exemplu de utilizare
77console.log(generateIban('DE')); // Generează un IBAN german valid
78console.log(generateIban('GB')); // Generează un IBAN britanic valid
791import random
2import string
3
4def generate_iban(country_code):
5 country_formats = {
6 'DE': {'length': 22, 'bban_format': '8n10n'},
7 'GB': {'length': 22, 'bban_format': '4a6n8n'},
8 'FR': {'length': 27, 'bban_format': '5n5n11c2n'}
9 # Adaugă mai multe țări după necesitate
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Codul țării {country_code} nu este suportat")
14
15 # Generează BBAN aleator bazat pe formatul țării
16 bban = ''
17 format_str = country_formats[country_code]['bban_format']
18 i = 0
19
20 while i < len(format_str):
21 count = int(''.join(c for c in format_str[i+1:] if c.isdigit()))
22 type_char = format_str[i]
23
24 if type_char == 'n': # Numeric
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Alfabetic
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Alfanumeric
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Calculează cifrele de control
34 check_digits = calculate_check_digits(country_code, bban)
35
36 return country_code + check_digits + bban
37
38def calculate_check_digits(country_code, bban):
39 # Creează șir pentru calcularea cifrei de control
40 check_string = bban + country_code + '00'
41
42 # Convertește literele în numere (A=10, B=11, ..., Z=35)
43 numeric = ''
44 for char in check_string:
45 if char.isalpha():
46 numeric += str(ord(char.upper()) - 55)
47 else:
48 numeric += char
49
50 # Calculează 98 minus mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Exemplu de utilizare
57print(generate_iban('DE')) # Generează un IBAN german valid
58print(generate_iban('GB')) # Generează un IBAN britanic valid
59Referințe și Lectură Suplimentară
- ISO 13616-1:2007 - Specificație oficială a structurii IBAN
- Registrul SWIFT IBAN - Sursă autorizată pentru formatele IBAN specifice fiecărei țări
- ISO 7064:2003 - Specificație pentru algoritmul de verificare a cifrei de control MOD 97
- Consiliul European de Plăți - SEPA - Documentație privind Spațiul Unic de Plăți în Euro
- Banca Centrală Europeană - Sisteme de Plăți - Standarde de integrare bancară europeană
- Banca pentru Reglementări Internaționale - Sisteme de Plăți - Standarde internaționale pentru sistemele de plăți
Începeți Testarea IBAN-urilor
Aveți nevoie de date de test pentru sistemul dvs. de plăți? Generați un IBAN valid pentru orice țară acceptată de mai sus, sau inserați un IBAN existent pentru a-i verifica structura. Instrumentul rulează integral în browser-ul dvs. - fără înscrieri, fără chei API, fără date trimise pe servere.
Sfat rapid: Generați IBAN-uri din mai multe țări pentru a testa cazurile limită. Sistemele de plăți din lumea reală gestionează formate diverse, iar testarea doar cu formatul unei singure țări este o sursă obișnuită de erori în producție.