Tüm makaleler

Luhn algoritması: bir kart numarasının doğruluğu nasıl kontrol edilir

Kart numarasının son hanesi rastgele seçilmez — bu, uzun bir numarayı elle yazarken yapılan tipik hataları yakalamak için özel olarak tasarlanmış bir kontrol basamağıdır.

Luhn algoritması nasıl çalışır

Algoritma, numaranın basamaklarını sağdan sola tarar, her ikinci basamağı ikiye katlar ve sonuç 9'u aşarsa ondan 9 çıkarır. Numara doğru girildiyse, ortaya çıkan tüm basamakların toplamı 10'a tam bölünür.

Visa ya da Mastercard'ın değil, IBM'in 1950'lerdeki buluşu

Algoritma, adını 1954 yılında bunu herhangi bir rakam dizisindeki aktarım hatalarını yakalamak için genel bir yöntem olarak patentleyen IBM bilim insanı Hans Peter Luhn'dan alır — başlangıçta ödeme kartlarıyla doğrudan bir ilgisi yoktu. Ödeme ağları bunu daha sonra benimsedi, çünkü hesaplaması ucuzdur ve elle girişte en sık yapılan iki hatayı yakalar: tek bir yanlış yazılmış rakam ya da yer değiştirmiş iki komşu rakam.

Türkiye'de Troy: Visa ve Mastercard'ın yanında yerli bir kart ağı

Türkiye'de uluslararası kart ağlarının yanı sıra, 2016'dan bu yana bankalararası bir konsorsiyum tarafından kurulan Troy adlı yerli bir ödeme kartı ağı da işlem görüyor. Troy kartları da aynı Luhn kontrolünden geçer — algoritma belirli bir ağa özgü değildir — ancak BIN aralıkları Visa ve Mastercard'ınkinden farklıdır, bu yüzden numaranın ilk haneleri kartın hangi ağa ait olduğunu ele verir.

Geçerli bir Luhn sonucu kartın gerçekten var olduğu anlamına gelmez

Luhn kontrolü yalnızca numaranın matematiksel yapısını doğrular, arkasında gerçek bir hesap olup olmadığını değil. Bu kontrolü geçen milyonlarca numara kolayca üretilebilir ve bunların hiçbiri gerçek bir karta bağlı olmayabilir — bu yüzden her gerçek ödeme, asıl doğrulama için mutlaka kartı veren bankadan geçmek zorundadır.

Bu neden işe yarar

  • Form sunucuya gönderilmeden önce yanlış girilmiş bir kart numarasını yakalamak.
  • Uzun bir numarayı elle girerken yapılan belirgin bir yazım hatasını hızlıca ayıklamak.
  • Luhn kontrolünün tam olarak neyi kanıtladığını ve neyi kanıtlamadığını anlamak.

Numaradan ödeme ağını tanımak (BIN)

Kart numarasının ilk birkaç hanesi, tam Luhn kontrolünden önce bile ödeme ağını belli eden BIN'i (Bank Identification Number) oluşturur. Visa numaraları 4 ile, Mastercard 51–55 aralığı veya daha yeni 2221–2720 aralığıyla, American Express 34 veya 37 ile, Troy ise kendi BIN aralığıyla başlar. Bir ödeme formunun, numara henüz yazılırken doğru ağ simgesini gösterebilmesinin sebebi budur.

Aracı dene