İçeriğe geç
IBAN Aracı

IBAN MOD 97 Nedir?

MOD 97, IBAN'ın kontrol hanelerini doğrulayan matematiksel algoritmadır (ISO 7064 MOD 97-10). IBAN'ın tamamını tek bir büyük sayı gibi işleyip 97'ye böler.

Kod örneklerini gör

Adım adım MOD 97

  • 1. IBAN'ın ilk 4 karakteri (ülke kodu + kontrol hanesi) sona taşınır.
  • 2. Harfler sayıya çevrilir: A=10, B=11, ..., Z=35.
  • 3. Oluşan çok basamaklı sayı 97'ye bölünür.
  • 4. Kalan 1 ise IBAN kontrol hanesi geçerlidir.

Büyük sayı sorunu

IBAN çok uzun bir sayı oluşturduğu için doğrudan tam sayıya çevirmek taşma (overflow) yaratır. Bu yüzden hesaplama basamak basamak (streaming) yapılır: her adımda kalan güncellenir. IBAN Aracı da bu yöntemi kullanır, böylece tarayıcıda hatasız ve hızlı çalışır.

Kontrol hanesi üretimi

Aynı algoritma, ülke kodu ve hesap bilgisinden doğru kontrol hanelerini üretmek için de kullanılır: kontrol yeri "00" alınır, sonuç 98'den çıkarılır. Geliştirici örnekleri için JavaScript IBAN doğrulama kodu sayfasına bakın.

ISO 7064 nedir?

MOD 97, kendi başına icat edilmiş bir "IBAN numarası" değildir; ISO 7064 adlı uluslararası bir standardın parçasıdır. Bu standart, kimlik numaralarının ve hesap numaralarının doğruluğunu kontrol etmek için tasarlanmış bir dizi kontrol-hanesi yöntemini tanımlar. IBAN, bunların arasından MOD 97-10 adı verilen varyantı kullanır. Standart bir yöntem kullanmanın avantajı, dünyanın her yerindeki sistemlerin aynı IBAN'ı aynı kurallarla kontrol edebilmesidir. Yani bir Türkiye IBAN'ı da, bir İspanya IBAN'ı da tamamen aynı matematikle sınanır; yalnızca beklenen uzunluk ve biçim değişir.

Neden basamak basamak hesaplanır?

IBAN'ın harfleri rakama çevrildiğinde ortaya 20 basamağı aşan devasa bir sayı çıkar. Bu sayıyı sıradan bir tam sayı değişkenine sığdırmaya çalışmak, çoğu sistemde "taşma" (overflow) yani sayının bozulması anlamına gelir. Bu yüzden MOD 97 hesabı, tüm sayıyı tek seferde değil, basamak basamak yaparak yürütülür: her adımda o ana kadarki kalan güncellenir ve bir sonraki basamağa taşınır. Sonuç aynıdır ama hesap güvenli kalır. IBAN Aracı da bu akış (streaming) yöntemini kullanır; böylece doğrulama tarayıcıda, hiçbir taşma riski olmadan ve anında çalışır.

97 asal sayısının avantajı

MOD 97'nin neden özellikle 97 sayısını seçtiği, matematiksel bir tercihtir. 97 bir asal sayıdır ve bu özellik, hataların "tesadüfen" doğru sonucu vermesini zorlaştırır. Sonuç olarak yaygın yazım hataları — özellikle tek rakam hataları ve yan yana rakamların yer değiştirmesi— çok yüksek oranda yakalanır. Kalanın 0 ile 96 arasında olması da iki haneye rahatça sığar, dolayısıyla kontrol hanesi kısa kalır. Kısacası 97, hem güçlü bir hata yakalama hem de küçük bir kontrol alanı sağladığı için seçilmiştir.

Neyi yakalar, neyi kaçırır?

MOD 97, elle yazım ve kopyalama sırasında ortaya çıkan hataların büyük kısmını yakalar; bir rakamı yanlış yazmak ya da iki rakamın yerini değiştirmek gibi. Ama sınırı da vardır: birbirinden farklı ama ikisi de geçerli olan iki IBAN'ı karıştırdığınızda MOD 97 bunu göremez, çünkü seçtiğiniz numara kendi içinde tutarlıdır. Yani MOD 97 "yazım tutarlılığını" doğrular, "doğru hedefi" değil. Bu ayrımın hesap aktifliğiyle ilişkisini geçerli IBAN, aktif hesap mı?rehberinde, kontrol hanesinin rolünü ise kontrol hanesi nedir?içeriğinde ele aldık.

Basit toplam kontrollerinden farkı

Neden IBAN, rakamları toplayıp kontrol eden daha basit bir yöntem yerine MOD 97'yi seçti? Çünkü basit toplam yöntemleri yaygın bir hata türünü kaçırır: yan yana iki rakamın yer değiştirmesi. Rakamları topladığınızda 47 ile 74'ün toplamı aynıdır; dolayısıyla bu tür bir yer değiştirmeyi fark edemezsiniz. Oysa bu, elle yazımda en sık yapılan hatalardan biridir. MOD 97, sayının yalnızca değerine değil basamak sırasına da duyarlı olduğu için bu tür yer değiştirmeleri yakalar. İşte bu yüzden IBAN, daha hesaplaması kolay ama daha zayıf yöntemler yerine bu güçlü kontrolü tercih eder; amaç en çok yapılan hataları en yüksek oranda elemektir.

MOD 97 yalnızca IBAN'a mı özgü?

Hayır. MOD 97 ve akrabası olan kontrol-hanesi yöntemleri, IBAN dışında da birçok yerde kullanılır; çeşitli kimlik ve referans numaralarında benzer mantıkla doğruluk kontrolü yapılır. IBAN'ı özel kılan, bu yöntemi uluslararası ölçekte ve tüm katılımcı ülkelerde ortak biçimde uygulamasıdır. Yani MOD 97, IBAN'ın icat ettiği bir şey değil, IBAN'ın akıllıca ödünç aldığı, kanıtlanmış bir kontrol yöntemidir. Bu, tekerleği yeniden icat etmek yerine iyi çalışan bir standardı benimsemenin güzel bir örneğidir.

Kendiniz denemek isterseniz

MOD 97'yi anlamanın en iyi yolu, onu çalışırken görmektir. Geçerli bir IBAN alıp tek bir hanesini değiştirin ve numarayı doğrulama aracına yapıştırın; aracın numarayı neden reddettiğini anında görürsünüz. Tersine, bir banka kodu ve hesap numarasından geçerli bir IBAN üretmek için IBAN oluşturucuyu kullanabilir, kontrol hanesinin nasıl hesaplandığını izleyebilirsiniz. Bu iki araç, MOD 97'nin hem doğrulama hem de üretim tarafını elle deneyimlemenizi sağlar; algoritmayı ezberlemenize gerek kalmadan mantığını sezersiniz.

Neden geçerli IBAN'da kalan hep 1 çıkar?

MOD 97'nin en zarif tarafı, geçerli her IBAN için sonucun tek bir sabit değere —1'e— eşit olmasıdır. Bu tesadüf değil, tasarımın kendisidir. Kontrol hanesi, tam olarak bu sonucu üretecek biçimde hesaplanıp numaraya yerleştirilir. Yani IBAN oluşturulurken kontrol hanesi öyle seçilir ki, tüm numara 97'ye bölündüğünde kalan 1 olsun. Doğrulama da bunu tersinden kontrol eder: kalan 1 ise numara tutarlıdır, değilse bir yerde bozulma vardır. Bu sabit hedef, doğrulamayı hem basit hem de kesin kılar; "acaba beklenen değer neydi?" diye düşünmeye gerek yoktur, cevap her zaman 1'dir.

Doğrulama ve üretim aynı madalyonun iki yüzü

MOD 97'yi anlamanın güzel yanı, aynı matematiğin hem bir IBAN'ı doğrulamak hem de sıfırdan üretmek için kullanılmasıdır. Doğrularken, mevcut kontrol hanesiyle birlikte tüm numarayı işleyip kalanın 1 olup olmadığına bakarsınız. Üretirken ise kontrol hanesi yerini geçici olarak boş (00) kabul edip hesabı yapar, çıkan sonucu belirli bir işlemle kontrol hanesine çevirirsiniz. Yani doğrulama ile üretim, aynı algoritmanın ileri ve geri yönleridir. Bu simetri, IBAN oluşturucu araçların nasıl her seferinde geçerli bir numara üretebildiğini de açıklar; sihir değil, MOD 97'nin ters yönde çalıştırılmasıdır.

Özet

MOD 97, IBAN'ın kontrol hanelerini doğrulayan ve ISO 7064 standardına dayanan bir algoritmadır. IBAN'ı büyük bir sayı gibi işleyip 97'ye böler; geçerli bir IBAN'da kalan her zaman 1'dir. Devasa sayıyı güvenle işlemek için hesap basamak basamak yapılır. 97'nin asal olması, yaygın yazım hatalarının çoğunu yakalayan güçlü bir kontrol sağlar. Yine de MOD 97 yalnızca biçimsel tutarlılığı doğrular; doğru kişiye gönderdiğinizi kanıtlamaz.

Sık sorulan sorular

MOD 97-10, ISO 7064 standardında tanımlanan bir kontrol hanesi algoritmasıdır ve IBAN doğrulamasında kullanılır.

İlgili rehberler

İlgili araçlar