Luhn Algoritması, IBM mühendisi Hans Peter Luhn tarafından 1954 yılında geliştirilmiş bir doğrulama algoritmasıdır. Algoritma, hızlı ve basit bir şekilde bir dizi sayının doğruluğunu kontrol etmeyi amaçlar. Günümüzde, özellikle kredi kartı ve mobil cihaz IMEI numaralarının doğruluğunu sağlamak için yaygın olarak kullanılır. Matematiksel temellere dayanan bu yaklaşım, kullanıcı hatalarını önlemede etkili bir araçtır ve birçok sektörde veri doğruluğunu artırmak için tercih edilmektedir.
Luhn Algoritması, düşük işlem maliyeti ve basit kullanımıyla sistem performansını düşürmeden veri doğrulama süreçlerine entegre edilebilir. Güvenlik odaklı bir algoritma olmadığı için, sahtecilik önleme gibi durumlarda tek başına yeterli değildir. Bu yazıda, algoritmanın çalışma prensibini, nasıl çalıştığını, bir örnekle nasıl kullanıldığını ve avantajları ve dezavantajlarını ele alacağız.
Luhn Algoritmasının Çalışma Prensibi
Luhn Algoritması, bir dizi sayının (genellikle bir numaranın) doğru olup olmadığını kontrol etmek için tasarlanmıştır. Bu algoritma, şu adımları takip eder:
- Adım 1: Sayı Dizisinin Hazırlanması
- Doğrulama yapılacak sayılar sağdan sola doğru değerlendirilir.
- İlk sayı (en sağdaki) kontrol basamağı olarak ayrılır.
- Adım 2: Her İkinci Sayıyı Çiftleme
- Kontrol basamağı hariç diğer tüm sayılar sırayla alınır.
- Sağdan sola doğru her ikinci sayı ikiyle çarpılır.
- Adım 3: Çarpım Sonuçlarının Toplanması
- İkiyle çarpılan sayılarda sonuç tek basamaklıysa aynen alınır; iki basamaklıysa basamaklar toplanır.
- Adım 4: Tüm Sayıların Toplanması
- Çiftleme sonrası elde edilen sayılar ve çiftlenmeyen diğer sayılar toplanır.
- Adım 5: Modulo İşlemi ile Doğrulama
- Toplamın 10’a bölünmesi sonucu kalan 0 ise numara geçerli sayılır.
Örnek: Kredi Kartı Numarası Doğrulama
Bir kredi kartı numarasının doğruluğunu kontrol etmek için Luhn Algoritmasını uygulayalım. Numara: 4539 1488 0343 6467
- Kontrol Basamağını Ayırma
- Kontrol basamağı: 7
- Geri kalan: 4539 1488 0343 646
- Her İkinci Sayıyı Çiftleme
- Sağdan sola: 6, 4, 3, 6, 8, 4, 9, 5
- Çiftlenenler: 6×2=12, 4×2=8, 3×2=6, 6×2=12, 8×2=16, 4×2=8, 9×2=18, 5×2=10
- Basamakları Toplama: (1+2) + 8 + 6 + (1+2) + (1+6) + 8 + (1+8) + (1+0) = 34
- Çiftlenmeyen Sayılar ve Toplam
- Çiftlenmeyenler: 7, 3, 8, 4, 3, 9, 5
- Toplam: 7 + 3 + 8 + 4 + 3 + 9 + 5 = 39
- Toplam
- 34 + 39 = 73
- Doğrulama
- 73 mod 10 = 3 ≠ 0, bu numara geçerli değildir.
// C# program to implement
// Luhn algorithm
using System;
class GFG {
// Returns true if given
// card number is valid
static bool checkLuhn(String cardNo)
{
int nDigits = cardNo.Length;
int nSum = 0;
bool isSecond = false;
for (int i = nDigits - 1; i >= 0; i--)
{
int d = cardNo[i] - '0';
if (isSecond == true)
d = d * 2;
// We add two digits to handle
// cases that make two digits
// after doubling
nSum += d / 10;
nSum += d % 10;
isSecond = !isSecond;
}
return (nSum % 10 == 0);
}
// Driver code
static public void Main()
{
String cardNo = "79927398713";
if (checkLuhn(cardNo))
Console.WriteLine("This is a valid card");
else
Console.WriteLine("This is not a valid card");
}
}
C#Çıktı:
This is a valid card
Luhn algoritması, tek basamaklı hataların yanı sıra, bitişik basamaklardaki hemen hemen tüm transpozisyonları da tespit eder.
Kullanım Alanları
Luhn Algoritması aşağıdaki alanlarda yaygın olarak kullanılır:
- Kredi Kartı ve Banka Kartları: Kart numaralarının doğruluğunu kontrol etmek için.
- IMEI Numaraları: Mobil cihazların uluslararası kimlik doğrulaması için.
- Sosyal Güvenlik Numaraları: Bazı ülkelerde kimlik numaralarının doğruluğunu sağlamak için.
- Online Ödeme Sistemleri: Hatalı numara girişlerini önlemek için.

Avantajları
- Basitlik: Algoritma kolayca anlaşılır ve uygulanabilir.
- Hız: Doğrulama işlemi hızlı bir şekilde gerçekleştirilir.
- Yanlış Veri Girişini Önleme: Hatalı numara girişlerini engelleyerek veri doğruluğunu artırır.
- Kaynak Verimliliği: Düşük işlem gücü gerektirir, bu da küçük cihazlarda bile çalışabilir olmasını sağlar.
Dezavantajları
- Güvenlik Zayıflığı: Algoritma sadece doğrulama için tasarlanmıştır; güvenlik sağlayamaz. Numaranın doğruluğunu kontrol eder ancak numaranın sahte mi yoksa gerçek mi olduğunu anlamaz.
- Basit Hatalar: Algoritma sadece tek bir basamağın yanlış girilmesini ya da iki basamağın yer değiştirilmesini tespit edebilir.
Luhn Algoritması, doğrulama işlemlerinde etkili bir araçtır. Özellikle kimlik numaraları ve kredi kartları gibi verilerin doğruluğunu sağlamada önemli bir rol oynar. Bununla birlikte, güvenlik açısından tek başına yeterli değildir ve daha sofistike güvenlik sistemleriyle desteklenmelidir. Günümüzde bile, hatalı girişleri engellemek için bu algoritma sıklıkla kullanılmaktadır.
Kaynakça:investopedia, medium, academia
Yorum Yap