Yazılım ve Finans Entegrasyonu: Sistemler İçin IBAN Validasyon Mantığı ve MOD-97 Algoritması

H
Hesaplamasyon Editör Ekibi
2024-05-18
Yazılım ve Finans Entegrasyonu: Sistemler İçin IBAN Validasyon Mantığı ve MOD-97 Algoritması
İnteraktif Hesaplama Aracı

İban Doğrulama ve Hesaplama

Bu rehberde anlatılan hesaplamayı kendi değerlerinizle hemen ücretsiz ve anında gerçekleştirin.

Aracı Aç ve Hesapla

E-ticaret platformları, İK yazılımları (bordro sistemleri) veya kurumsal ERP (Kurumsal Kaynak Planlama) uygulamaları geliştirirken, kullanıcıdan IBAN numarası almak oldukça kritik bir form girdisidir. Kullanıcının eksik, hatalı veya tamamen uydurma bir IBAN girmesine izin vermek, ödeme günlerinde operasyonel bir kabusa dönüşebilir. Bu makalede, yazılım geliştiriciler ve sistem mimarları için IBAN validasyonunun (doğrulamasının) ardındaki mantığı, Regex (Düzenli İfadeler) kullanımını ve devasa sayılarla MOD-97 algoritmasının koda nasıl güvenli bir şekilde aktarılacağını ele alacağız.

Sistem Tasarımında IBAN Doğrulamanın 3 Aşaması

İyi tasarlanmış bir form validasyonu, kullanıcıya anında geri bildirim vermelidir. IBAN için bu süreç üç ardışık aşamadan oluşur:

Aşama 1: Temizlik (Sanitization) ve Temel Format (Regex)

Kullanıcılar IBAN girerken genellikle 4'erli gruplar halinde yazar ve aralara boşluk, tire veya nokta koyabilir. Doğrulama yapmadan önce veriyi standartlaştırmak şarttır.

  1. Temizlik: Tüm boşluklar, tireler ve özel karakterler temizlenmeli, tüm harfler büyük (Uppercase) yapılmalıdır.
  2. Regex Kontrolü: IBAN'ın ilk 2 hanesi harf (Ülke Kodu), sonraki 2 hanesi rakam (Kontrol Basamağı) ve geri kalanı harf/rakam karışımı olmalıdır.

Bunun için kullanılabilecek temel Regex şöyledir:
/^[A-Z]{2}[0-9]{2}[A-Z0-9]+$/

Bu Regex'ten geçemeyen bir girdi, doğrudan reddedilebilir; çünkü ISO 13616 standardına temelden aykırıdır.

Aşama 2: Ülke Bazlı Uzunluk Kontrolü

İkinci güvenlik katmanı, uzunluk kontrolüdür. IBAN sisteminde her ülkenin sabit bir uzunluğu vardır. Minimum 15, maksimum 34 karakter olabilir.

Örneğin, sisteminiz sadece Türkiye'ye (TR) ödeme yapıyorsa, karakter sayısının tam olarak 26 olduğunu teyit etmeniz gerekir. Uluslararası bir sistem geliştiriyorsanız, bir ülke/uzunluk sözlüğü (dictionary/map) tutmanız (örn. TR: 26, DE: 22, GB: 22) ve ilk iki harfe göre (substring(0,2)) bu sözlükten uzunluk kontrolü yapmanız önerilir.

Aşama 3: MOD-97 Algoritması ve Büyük Sayı (BigInt) Problemi

En kritik aşama matematiksel doğrulamadır. Kural basittir: İlk 4 karakteri sona taşı, harfleri sayıya çevir (A=10, B=11, ..., Z=35), elde edilen sayının 97'ye bölümünden kalan 1 mi diye kontrol et.

Yazılımcıların burada karşılaştığı en büyük sorun, ortaya çıkan string'in 20 ila 30 hane arasında devasa bir sayı olmasıdır. JavaScript veya çoğu dilin standart Number (veya Integer/Float) tipi, 64-bit IEEE 754 standardı nedeniyle 15-16 basamaktan büyük sayılarda hassasiyet kaybı yaşar (Precision Loss).
Yani 12345678901234567890123456 % 97 işlemini standart operatörle yaparsanız, yuvarlama hataları yüzünden yanlış modüler sonuç alırsınız.

Çözüm Yöntemleri

  1. BigInt Kullanımı: Modern dillerde yerleşik bulunan BigInt tiplerini kullanabilirsiniz. (Örn. JS'de BigInt(devasaSayi) % 97n === 1n).
  2. Parçalı Modüler Aritmetik (String Manipulation): Eski tarayıcıları veya BigInt desteklemeyen dilleri desteklemek için, klasik bölme işlemini string üzerinde adım adım yapan bir döngü yazılır. Her adımda sayının bir rakamı alınır, önceki kalan 10 ile çarpılıp yeni rakam eklenir ve 97'ye göre modu alınır.

Örnek Parçalı Modüler Mantığı (Pseudo-code / Algoritma):

kalan = 0
her bir karakter(c) için sayı_stringi_içinde:
    kalan = (kalan * 10 + Numara(c)) % 97
eğer kalan == 1 ise GEÇERLİ

Bu yöntem bellek dostudur ve 100 haneli sayılarda bile hatasız çalışır.

Hazır Kütüphane Kullanmalı Mı?

Projelerinizde "iban.js" veya benzeri hazır kütüphaneler kullanabilirsiniz. Ancak dışa bağımlılığı azaltmak ve sistem performansını artırmak istiyorsanız, yukarıdaki mantıkla yazacağınız 15-20 satırlık temiz bir fonksiyon yeterli olacaktır.

Kendi yazdığınız fonksiyonların doğruluğunu test etmek veya sistemlerinize giren şüpheli IBAN'ları manuel olarak kontrol etmek (debug) isterseniz, İban Doğrulama ve Hesaplama aracımızı bir "Test Aracı" (Sandbox) gibi kullanabilirsiniz. Araçta yer alan "Biçim kontrolü", "Uzunluk kontrolü" ve "MOD-97 sonucu" detayları, kendi yazdığınız kodun hangi aşamada başarısız (veya başarılı) olduğunu teşhis etmenize yardımcı olacaktır.

Hesaplamanızı yapmaya hazır mısınız?

İban Doğrulama ve Hesaplama ile saniyeler içinde net ve hatasız sonuca ulaşın.

Hesaplamayı Başlat →