Luhn algoritması, kredi kartı numaralarının geçerliliğini denetlemede kullanılan sade, işlevsel ve matematik temelli bir yöntemdir.

Online alışverişin son adımına geldiniz. Ödeme ekranında kredi kartı numaranızı giriyorsunuz. Ancak bir anda karşınıza kırmızı bir uyarı çıkıyor: “Lütfen geçerli bir kredi kartı numarası girin.” Şaşkınlıkla rakamları yeniden kontrol ediyorsunuz ve hatayı fark ediyorsunuz: Beş yazmanız gerekirken altı yazmışsınız.
Düzeltmeyi yapar yapmaz ödeme tamamlanıyor. Peki sistem bu hatayı nasıl bu kadar hızlı fark etti? Sitenin, tüm geçerli kredi kartı numaralarının yer aldığı dev bir veri tabanına mı erişimi var? Ya da bankanıza anında mı ulaşıldı? Cevap bundan çok daha zekice.
Günümüzde kullanılan tüm kredi kartı numaraları, yazım hatalarını önceden fark edebilen bir matematiksel mekanizma içerir. Bu mekanizmanın adı, 1960 yılında IBM araştırmacısı Hans Peter Luhn tarafından geliştirilen ve patenti alınan Luhn algoritmasıdır.

Luhn Algoritması Nedir?
Cüzdanınızdan bir kredi kartı çıkardığınızda, üzerinde rastgele gibi görünen sayıların aslında belirli bir yapıya göre düzenlendiğini fark edersiniz. Tüm kredi ve banka kartlarının üzerinde genellikle 16 haneli basılı rakamlar yer alır. Bu rakamlar, bir kart için benzersiz bir hesap numarasını belirtir ve kartı veren kuruluş ve ilgili hesap hakkında bazı bilgileri saklar. Bu nedenle de belli bir modeli takip eder.

Tipik bir on altı haneli kredi kartı numarasında, ilk on beş hane ilgili banka tarafından belirlenmektedir. İlk haneler, kartın ait olduğu banka ve ödeme ağı hakkında bilgi verir. Örneğin, Visa kartları genellikle “4” ile, Mastercard kartları ise “5” ile başlar.
Hemen ardından gelen beş ila yedi hanelik bölüm, kartı veren banka ya da finans kuruluşunu tanımlar. Bu bölüm, kart sahibinin bağlı olduğu kurumu belirler. Kalan rakamlar (son rakam hariç), kart sahibinin ilgili bankadaki kişisel hesap numarasını temsil eder.
Son hane, yani “kontrol basamağı”, doğrudan bir finans kurumu bilgisi taşımaz. Bunun yerine, kart numarasının geçerli olup olmadığını kontrol eden özel bir matematiksel işlem için eklenir.
Luhn Algoritması Nasıl Çalışır?
Algoritmanın işleyişi modüler aritmetik üzerine kuruludur. Luhn Algoritması, bir sayının mod 10 kontrolünden geçerek doğru olup olmadığını belirler ve şu adımlarla çalışır:
- Son rakam hariç tüm kart numarasını yazın.
- Sağdan başlayarak her iki rakamdan birini ikiyle çarpın.
- Elde edilen çarpımların rakamlarını toplayın. Örneğin, 7 ikiyle çarpıldığında 14 eder; bu adımda 1 + 4 = 5 olarak değerlendirilir.
- Bu toplamın üzerine son rakamı, yani kontrol basamağını ekleyin.
- Eğer çıkan sonuç 10’un katıysa, kart numarası geçerlidir. Değilse, hatalı bir numarayla karşı karşıyasınız.
Luhn algoritmasının nasıl çalıştığını daha iyi anlamak için somut bir örnek üzerinden ilerleyelim. Diyelim ki elimizde 16 haneli bir banka kartı numarası var. Bu numaranın ilk 15 hanesi şöyle olsun: 5333 6195 0371 570. Son haneyi henüz bilmediğimiz için x olarak bırakalım.
İlk adımda, son basamak hariç tüm rakamları yazmamız gerekir. İkinci adımda, en sağdan başlayarak her ikinci rakam ikiyle çarpılır. Son haneyi henüz bilmediğimiz için x olarak bırakalım.
Üçüncü adımda, çarpım sonucu iki basamaklı olan sayılar varsa, bu sayıların basamakları kendi içinde toplanır. Örneğin, 14 sayısı 1 + 4 = 5 ve 10 ise 1 + 0 = 1 olur. Sonucunuz aşağıdaki gibi olacaktır.

Tüm sayıları topladığınızda sonuç 48 + x olur. Bu toplamın 10’a tam bölünmesi gerekir. Bu durumda x = 2’dir, çünkü 48 + 2 = 50 ve 50, 10’un katıdır. Yani geçerli kart numarası budur.
Kredi kartı sağlayıcıları önce hesap numarasını belirler, ardından Luhn algoritmasının ilk üç adımını uygular. Bu işlemler sonucunda hangi kontrol basamağının eklenmesi gerektiği ortaya çıkar. Bu örnekte toplam 48 olduğuna göre, numaranın geçerli olabilmesi için son basamağın 2 olması gerekir.
Luhn Algoritması Ne Zaman İşe Yaramaz?
Luhn algoritmasını geçen bir kredi kartı numarası mutlaka geçerli olacak diye bir kural yoktur. Ancak algoritmayı geçemeyen bir numaranın kesinlikle geçersiz olduğu açıktır. Bu yöntem, sahte ya da hatalı numaralara karşı ilk ve hızlı bir kontrol mekanizması işlevi görür.

Kart numaranızı girerken tek bir rakamı yanlış yazarsanız, Luhn algoritması bunu anında tespit eder. Hatta yan yana duran iki rakamın yerini yanlışlıkla değiştirseniz bile, algoritma bu hatayı büyük ölçüde fark eder. Ancak istisnai bir durum vardır: 09’un 90 olarak yazılması ya da tam tersi. Bu özel değişim, Luhn algoritmasından kaçabilir.
1969 yılında Hollandalı matematikçi Jacobus Verhoeff, kullanıcıların yaptığı hatalar üzerine detaylı bir çalışma yayımladı. Araştırmasına göre, insanlar kart numarası girerken yaptıkları hataların yaklaşık yüzde 90’ı iki temel sebepten kaynaklanıyordu: tek bir rakamın yanlış girilmesi veya yan yana olan iki rakamın yer değiştirmesi.
Verhoeff, bu yaygın hataları algılamanın ötesine geçen daha gelişmiş bir algoritma geliştirdi. Bu algoritma yalnızca Luhn algoritmasının yakalayabildiği hataları değil, aynı zamanda 09/90 gibi özel yer değiştirme hatalarını ve daha karmaşık kaymaları da tespit edebiliyordu.
Verhoeff algoritması teknik açıdan Luhn’a göre daha üstün olmasına rağmen yaygın şekilde benimsenmedi. Bunun başlıca nedenlerinden biri, yapısının daha karmaşık olmasıydı. Diğer neden ise Luhn algoritmasının hâlihazırda kullanılmakta olması ve büyük çoğunlukla yeterli düzeyde başarı sağlamasıydı.
Sonuç Olarak
Bir dahaki sefere ödeme ekranında o sinir bozucu hata mesajı belirdiğinde, bunun arkasında çalışan basit bir matematiksel denklemin herkesin zamanını ve parasını koruduğunu hatırlayın.
Kaynaklar ve ileri okumalar:
- Luhn Algorithm: Uses in Identity Verification for Credit Cards?; Yayınlanma tarihi: Kaynak site: Investopia. Bağlantı: Luhn Algorithm: Uses in Identity Verification for Credit Cards/
- Stevens, Hallam. “Hans Peter Luhn and the birth of the hashing algorithm.” IEEE Spectrum 55 (2018): 44-49.
Size Bir Mesajımız Var!
Matematiksel, matematiğe karşı duyulan önyargıyı azaltmak ve ilgiyi arttırmak amacıyla kurulmuş bir platformdur. Sitemizde, öncelikli olarak matematik ile ilgili yazılar yer almaktadır. Ancak, bilimin bütünsel yapısı itibari ile diğer bilim dalları ile ilgili konular da ilerleyen yıllarda sitemize dahil edilmiştir. Bu sitenin tek kazancı sizlere göstermek zorunda kaldığımız reklamlardır. Yüksek okunurluk düzeyine sahip bir web sitesi barındırmak ne yazık ki günümüzde oldukça masraflıdır. Bu konuda bizi anlayacağınızı umuyoruz. Ayrıca yazımızı paylaşarak da büyümemize destek olabilirsiniz. Matematik ile kalalım, bilim ile kalalım.
Matematiksel