Pernahkan
Anda memiliki keinginan untuk membuat script untuk mengecek valid
tidaknya nomor dari sebuah kartu kredit ? Tulisan dibawah ini akan
menjelaskan hal tersebut agar Anda bisa membuat script untuk
pengecekan nomor kartu kredit sendiri.
Pada
dasarnya semua nomor kartu kredit menggunakan algoritma cek digit,
yaitu sebuah algoritma yang digunakan untuk mengecek validitas suatu
angka berdasarkan digit-digit yang membentuknya. Algoritma yang
dipergunakan untuk seluruh nomor kartu kredit adalah algoritma cek
digit Luhn. Entah bagiamana sejarahnya, yang jelas algoritma
cek digit Luhn adalah algoritma cek digit yang saat ini digunakan
oleh seluruh bank besar di dunia yang mengeluarkan kartu kredit.
Perlu
tiga langkah untuk membuktikan apakah suatu kartu memenuhi algoritma
cek digit Luhn, langkah-langkah tersebut adalah sebagai berikut :
-
Kalikan
dua setiap nilai untuk setiap digit yang letaknya pada posisi
ganjil, jika hasilnya lebih dari 9, kurangi hasilnya dengan 9.
Setelah itu jumlahkan semua angka yang telah didapat itu.
-
Jumlahkan
semua nilai untuk setiap digit yang letaknya pada posisi genap.
-
Jika
hasil penjumlahan langkah pertama dan kedua adalah sebuah bilangan
yang habis dibagi 10, berarti nomor kartu tersebut valid.
Umumnya
kartu kredit memiliki jumlah digit sebanyak 16, tetapi ada juga
kartu kredit yang memiliki jumlah digit yang ganjil, misalnya 13
atau 15 digit. Untuk kartu-kartu kredit yang memiliki jumlah digit
ganjil, langkah pertama yang dikalikan adalah digit yang terletak
pada posisi genap, dan langkah kedua yang dijumlahkan adalah digit
pada posisi ganjil.
Contoh
:
Nomor kartu kredit : 1800-2020-3047-8690
Apakah kartu
kredit ini valid ? Cara pengecekannya adalah sebagai berikut
:
-
Langkah
pertama, (1x2)+(0x2)+(2x2)+(2x2)+(3x2)+(4x2)+(8x2-9)+(9x2-9)=39
-
Langkah
kedua, 8+0+0+0+0+7+6+0=21
-
Langkah
ketiga, 39+21=60. Bilangan 60 adalah bilangan yang habis dibagi
10, maka bisa dipastikan nomor kartu kredit tersebut valid.
Contoh
:
Jika saya punya kartu dengan nomor :
7889-8594-5435-5413
dan saya ingin tahu
apakah angka ini benar-benar nomor kartu kredit yang sah atau tidak
saya bisa melakukan langkah sbb (perhatikan jumlah digit ada 16):
1) mengalikan semua angka pada digit ganjil dengan dua dan
mengurangkan hasilnya dengan 9 jika lebih dari 9, lalu dijumlahkan
inilah digit-digit pada posisi ganjil
D01 = 7
D03 = 8
D05 = 8
D07 = 9
D09 = 5
D11 = 3
D13
= 5
D15 = 1
Jika dilakukan operasi kali dua dan kurangi
9 (jika lebih dari 9) didapat
D01' = 7 x 2 = 14, karena
lebih dari maka hasilnya dikurangi 9 D02' = 14 - 9 = 5
D03' = 8
x 2 = 16, karena lebih dari maka hasilnya dikurangi 9 D02' = 16 - 9
= 7
D05' = 8 x 2 = 16, karena lebih dari maka hasilnya dikurangi
9 D02' = 16 - 9 = 7
D07' = 9 x 2 = 18, karena lebih dari maka
hasilnya dikurangi 9 D02' = 18 - 9 = 9
D09' = 5 x 2 = 10, karena
lebih dari maka hasilnya dikurangi 9 D02' = 10 - 9 = 1
D11' = 3
x 2 = 6 , kurang dari 9 jadi tetap 6
D13' = 5 x 2 = 10, karena
lebih dari maka hasilnya dikurangi 9 D02' = 10 - 9 = 1
D15' = 1
x 2 = 2 , kurang dari 9 jadi tetap 2
Jumlah D01' + D03' +
D05' + D07' + D09' + D11' + D13' + D15' = 5 + 7 + 7 + 9 + 1 + 6 + 1
+ 2 = 38
2) Menjumlahkan semua digit pada posisi genap
D02 = 8
D04 = 9
D06 = 5
D08 = 4
D10 = 4
D12 = 5
D14 = 4
D16 = 3
Jumlah = 8 + 9 + 5 + 4 +
4 + 5 + 4 + 3 = 42
Bila hasil langkah 1 dan langkah 2
dijumlahkan didapat 38 + 42 = 80, karena 80 habis dibagi 10 maka
nomor tersebut sah sebagai nomor kartu kredit.
Sudah jelas
kan?, ternyata algoritma cek digit pada kartu kredit sangat mudah
dilakukan Anda pun bisa menghasilkan nomor-nomor yang sah sebagai
nomor kartu kredit dengan menggunakan program, dan katanya dulu ini
bisa dipakai untuk melakukan credit card fraud saya sendiri masih
kurang mengerti dengan caranya karena menurut saya sekarang ini
pemeriksaan sudah jauh lebih ketat dan hampir tidak mungkin
seseorang lolos dengan hanya berbekal nomor yang sah saja tanpa
expiration date dan nama pemiliknya.
Untuk
penambahan jika Anda membuat script validasi nomor kartu kredit,
tabel dibawah ini bisa disertakan untuk mengecek apakah kartu
tersebut sesuai dengan bank yang mengeluarkannya (jenisnya).
Prefiks |
Jumlah Digit |
Jenis Kartu |
300 |
14 |
Diners |
301 |
14 |
Diners |
302 |
14 |
Diners |
303 |
14 |
Diners |
304 |
14 |
Diners |
305 |
14 |
Diners |
34 |
15 |
Amex |
36 |
14 |
Diners |
37 |
15 |
Amex |
38 |
14 |
Diners |
4 |
13 |
Visa |
4 |
16 |
Visa |
51 |
16 |
Mastercard |
52 |
16 |
Mastercard |
53 |
16 |
Mastercard |
54 |
16 |
Mastercard |
55 |
16 |
Mastercard |