Kredi kartı numaraları göründükleri kadar rastgele numaralar değildirler. İlk 4 rakam kartı çıkaran bankayı belirler. Son rakam checksum’dır ve hatalar buna göre kontrol edilebilir. Minimum olarak kredi kartı kabul eden yazılımlar bu checksum’ı kontrol edebilir. Tabik ki bu kredi kartı numarasını online bir kimlik tanılama servisi ile kontrol etmekle karşılaştırılamaz.
Checksum algoritması:
Karttaki her rakamı 'weight'i ile çarp. Weight 1,2,1,2 olarak değişir. Rakamlarının sayısı çift olan bir kart için seri 2 ile, aksi durumda 1 ile başlar.
Weight işlemi uygulanan sayı 9 dan büyükse 9 çıkar. Weight işlemi uygulanmış rakamları topla ve base-10 modulus’ünü hesapla.
Sonuç 0 a eşit olmalı.
İşte bir kredi kartı numarasının geçerliliğini kontrol edecek bir perl script’i. Geçerli bir numara için '1' tersi için '0' dönecektir.
Sub check_cc { My $num = shift; My $sum = 0; My @digits = $num~/(\d)/g; My @weights = (1,2) x (@digits/2 + 1); Shift @weights unless @digits/2 +1); Foreach (@digits) { My $weighted = $_ * shift @weights; $weighted -= 9 if $weighted > 9; $sum += $weighted; } return ($sum % 10) == 0; }
Saygılar.
------------- WHİTE HAT
BEYAZ ŞAPKA (BİLGİ NEFERİ)
|