Processing math: 100%

Dec 7, 2013

Analisis Nomor Kartu Kredit Visa & Master di Indonesia

Kartu kredit di Indonesia yang paling umum digunakan adalah yang berjenis visa atau mastercard yang akan berbentuk seperti gambar berikut:

Pada gambar diatas terlihat bahwa kartu ini berjenis mastercard, dikeluarkan oleh "CIMB Niaga", dan berjenis platinum dengan nomor kartu kredit "5289 1988 8888 8888" dengan nama pemilik kartu "Kenneth Harry"


Jadi dari sini terlihat sebuah properti pertama bahwa nomor kartu kredit memiliki 16 digit angka [0-9] yang kita generalisasi sebagai berikut:
X={xi|1i16 and 0xi9}


Dari ke-16 angka tersebut, angka-angka pada kartu kredit terbagi menjadi 3 bagian besar yaitu:
  1. BIN (Bank Identification Number)
    BIN ini adalah 6 angka terkiri x1,x2,x3,x4,x5,x6 dimana x1 adalah system code (4 untuk visa, dan 5 untuk master), khusus untuk master 1x25. Sisa digit adalah kode bank dan jenis kartu. Saat ini ada beberapa website yang menyediakan list dari BIN ini binlist (free) dan bindb (bayar)
    Contoh:
    540184: Citibank Reward Master
    432449: Danamon Platinum Visa
    489087: Mega Carefour Visa
    548117: CIMB Niaga Gold Master
  2. Account Number
    merupakan 9 angka setelah BIN yaitu x7,x8,x9,x10,x11,x12,x13,x14,x15. Nomor ini seharusnya tidak digenerate secara sequential, tapi kemungkinan menggunakan random generator standart dengan inisial seed hanya masing-masing bank yang tahu.
  3. Check Sum Number
    digit terakhir yaitu x16 adalah check sum digit, yang digenerate menggunakan algoritma Luhn.

Peran Algoritma Luhn

Pada saat membayar kartu kredit via ATM, seringkali tidak terdapat informasi mengenai nama pemilik kartu, tagihan yang dibebankan, tanggal jatuh tempo, dll. Sehingga sering membuat grogi apakah nomor kartu kredit yang dimasukkan ini sudah benar atau belum, jangan2 ini nomor kartu kredit orang lain yang dibayar.

Untuk menanggulangi kesalahan tersebut, maka digunakan algoritma luhn untuk mengecek apakah nomor kartu kredit tersebut valid atau tidak.

Berikut ini adalah algoritma Luhn, yaitu:
f(X)=(16i=1h(xi,i))mod10=0

dimana
h(x,i)={x if i is evenx5+(2xmod10) if i is odd

Beberapa kegunaan dari algoritma ini adalah sebagai berikut:

Pertama
Apabila secara tidak sengaja kita mengganti salah satu nilai dari X, maka f(X)0

Proof:
Nilai f(X)=0 apabila kita ganti nilai xi dengan xi maka nilai f(X)=(10xi+xi)mod10. Agar nilai f(X)=0 maka nilai xi={10n+xi|0n}, sehingga nilai xi yang memungkinkan hanya xi=xi.

Kedua
Apabila secara tidak sengaja dua digit yang bersebelahan tertukar, maka f(X)0 memiliki error rate sebesar 2.7 persen.

Proof:
misalkan ada dua digit yang bersebelahan tertukar dan tetap menyebabkan f(X)=0, maka (h(xi,i)+h(xi+1,i+1))mod10=(h(xi+1,i)+h(xi,i+1))mod10

Untuk mempermudah perhitungan, maka h(xi,i) untuk i ganjil, dapat diubah menjadi:
h(xi,i)=2xi9xi5 if i is odd

sehingga menjadi:
xi+2xi+19xi+15=xi+1+2xi9xi5xi+19xi+15=xi9xi5

karena 0xi,xi+19, maka (xi,xi+1)=(0,9), sehingga error rate dari algoritma ini untuk dua digit bersebelahan yang tertukar adalah 2.7 persen.

Berikut ini adalah h(xi,i) untuk setiap input:
0123456789
genap0123456789
ganjil0246813579

No comments:

Post a Comment