Luhn Algoritması Nedir?
"Mod 10" algoritması olarak da bilinen Luhn algoritması, IBM bilim insanı Hans Peter Luhn tarafından 1954 yılında geliştirilen basit bir kontrol toplamı (checksum) formülüdür. Kredi ve banka kartı numaraları, telefonların IMEI seri numaraları ve pek çok ülkenin kimlik numarası gibi tanımlayıcıları doğrulamak için kullanılır. Tek haneli hataları ve çoğu rakam yer değiştirme hatasını yakalar; ancak bu bir kriptografik güvenlik önlemi değil, yalnızca temel bir veri bütünlüğü kontrolüdür.
Hesaplayıcı Nasıl Kullanılır?
Doğrulamak istediğiniz numarayı ilgili alana yazmanız yeterli (boşluklar ve tireler otomatik olarak yok sayılır). Hesaplayıcı rakamları işler, Luhn kontrol toplamını uygular ve numaranın GEÇERLİ mi yoksa GEÇERSİZ mi olduğunu; ayrıca toplam değeri, toplamın mod 10 sonucunu ve sondaki kontrol hanesini gösterir.
Formülün Açıklaması
Rakamları sağdan sola doğru okuyun. En sağdaki (kontrol) haneyi olduğu gibi bırakın, ardından bir atlayarak her ikinci haneyi iki katına çıkarın. İki katı 9'dan büyük bir sayı verirse, sonuçtan 9 çıkarın (bu, sayının iki rakamını toplamakla aynıdır; örneğin \(8\times2=16 \to 1+6=7\)). Elde edilen tüm değerleri toplayın. Toplam 10'a tam bölünüyorsa numara Luhn kontrolünü geçer.
$$\text{Geçerli} \iff \left(\sum_{i=0}^{n-1} f(d_i)\right) \bmod 10 = 0 \\[1.5em] \text{where}\quad \left\{ \begin{aligned} d_i &= i\text{-th digit of } \text{Number} \text{ (from right)} \\ f(d_i) &= \begin{cases} d_i & i \text{ even} \\ 2d_i - 9\,[2d_i>9] & i \text{ odd} \end{cases} \end{aligned} \right.$$
Çözümlü Örnek
79927398713 numarasını ele alalım. Sağdan başlayarak her ikinci haneyi iki katına çıkarıp 9'dan büyük değerleri indirgediğimizde, düzenlenmiş hanelerin toplamı 70 olur. \(70 \bmod 10 = 0\) olduğundan numara geçerlidir.
Sıkça Sorulan Sorular
Luhn sonucunun geçerli olması kartın gerçek olduğu anlamına gelir mi? Hayır. Bu yalnızca numaranın doğru biçimde oluşturulduğunu gösterir; ilgili hesabın var olup olmadığını veya bakiyesini kontrol etmez.
Hangi karakterler kullanılabilir? Yalnızca rakamlar dikkate alınır; boşluklar, tireler ve diğer semboller hesaplamadan önce ayıklanır.
İki katına çıkarırken neden 9 çıkarılıyor? İki katı 9'dan büyük olan bir haneden 9 çıkarmak, o sayının iki rakamını toplamakla aynı sonucu verir; bu da Luhn kuralının tam olarak gerektirdiği işlemdir.