Luhn Algoritması

“Kredi kartı numaraları nasıl üretiliyor? “

Luhn algoritması, Hans Peter Luhn ve IBM tarafından 1954 yılında geliştirilen bir algoritmadır. Aynı zamanda Luhn Check ve Mod Check olarak da isimlendirilmektedir. Luhn algoritması 2 şey için kullanılır: Sayıyı Luhn algoritmasına göre hazırlamak ve sayıyı Luhn algoritması ile çözümlemek.

Hens Peter Luhn

Aşağıda Luhn algoritmasının kullanımının bir örneği verilmiştir.

“79927398713” hesap numarası örneğini düşünün.

Adım 1: En sağdaki rakamdan itibaren her ikinci basamağın sayı değerinin 2 katı alınır.

Adım 2: Eğer iki katına çıkarıldığında iki basamaklı bir sayı veriliyorsa, sayının rakamları toplamı kullanılır. Buradaki amaç tek haneli sayı elde etmektir. Örneğin ,  6 x 2 = 12 verdi. O zaman biz de 1 +2 = 3 olarak kullanacağız.

Adım 3: Tüm işlemleri yaptıktan sonra elimizdeki tüm rakamları toplayacağız. Bizim kullandığımız hesap numarasında 7+9+9+4+7+6+9+7+7+2+3 = 70 değerini bulduk. Bulduğumuz 70 sayısı mod(10) = 0 ise yani sayı 10 a tam bölünüyorsa kart geçerlidir.

Sadece Türkiye’de 192 milyondan fazla kart varken her defasında el ile hesap yapmak çok zordur. Bunun için Luhn algoritması genelde bilgisayarlar ile kullanılıp işlemler daha hızlı yapılmaktadır.

Luhn algoritmasının C++ dili ile yazılmış bir örneği aşağıdaki kod bloğunda görebilirsiniz.

// Author: Berke Demir 
// Contact : berkedemirberkeberke@gmail.com 

#include <bits/stdc++.h> 
using namespace std; 
bool checkLuhn(const string& cardNo) 
{ 
	int nDigits = cardNo.length(); 
	int nSum = 0, isSecond = false; 
	for (int i = nDigits - 1; i >= 0; i--) { 
		int d = cardNo[i] - '0'; 
		if (isSecond == true) 
			d = d * 2; 
		nSum += d / 10; 
		nSum += d % 10; 
		isSecond = !isSecond; 
	} 
	return (nSum % 10 == 0); 
} 
int main() 
{ 
	string cardNo = "79927398713"; // Kontrol Edilecek Kart No.
	if (checkLuhn(cardNo)) 
		printf("This is a valid card"); 
	else
		printf("This is not a valid card"); 
	return 0; 
}

Bilgilendirme : Bu yazıda kredi kartı numaralarının nasıl üretildiği anlatılmıştır. Bu numaralı kullanıp rastgele kart üretilmesi durumunda biz sorumlu değiliz.

Bir Cevap Yazın

%d blogcu bunu beğendi: