Di dunia nyata tentunya Anda sudah mengetahui, atau setidaknya mendengar bagaimana kartu kredit telah diterima secara luas di masyarakat. Berbagai toko, dan penyedia layanan jasa telah menerima pembayaran dengan menggunakan kartu kredit. Saat ini di dunia maya (Internet), pembayaran dengan kartu kredit juga sudah mulai diterima secara luas. Berbagai kejahatan telah sering dilakukan dengan penggunaan kartu kredit ini, baik di dunia nyata maupun di dunia maya. Namun di artikel ini saya tidak akan membahas mengenai keamanan kartu kredit, saya hanya membahas suatu hal kecil yang disebut sebagai pengecekan digit pada kartu kredit. Hal ini memang cukup kecil, namun patut diketahui oleh semua orang.
Dalam proses pembayaran di Internet dengan menggunakan kartu kredit, ada suatu proses yang sangat diperlukan yaitu authentication, hal ini merupakan proses untuk membuktikan bahwa nomor kartu kredit yang dimasukkan adalah benar, dan yang memasukkan adalah orang yang berhak untuk menggunakan kartu itu. Hal ini tampaknya mudah dilakukan, sebuah program bisa langsung di hubungkn ke server bank dan bisa langsung di periksa, tapi hal ini tentunya cukup menyita waktu, bagaimana jika nomor kartu yang dimasukkan ternyata salah ketik?, segala koneksi ke server bank, segala pencarian data dan lain-lainnya tentunya akan sia-sia.
Untuk (sedikit) memecahkan masalah di atas, nomor kartu kredit telah dirancang sedemikian rupa sehingga memungkinkan dilakukannya pengecekan awal sebelum sebuah nomor diperiksa melalui bank yang bersangkutan. Pengecekan ini adalah pengecekan kombinasi digit yang lazim dikenal dengan nama algoritma cek digit. Algoritma cek digit yang dipakai di kartu kredit adalah algoritma cek digit Luhn (Luhn check digit algorithm).
Algoritma Cek Digit Luhn
Algoritma cek digit merupakan suatu algoritma yang digunakan untuk mengecek validitas suatu angka berdasarkan digit-digit yang membentuknya. Salah satu aplikasi sangat umum yang kita temui dalam kehidupan sehari-hari adalah proses pemasukan data barang belanjaan yang kita beli di supermarket yang kecil (yang masih menggunakan input manual, tidak menggunakan bar code reader). Mungkin kadang-kadang Anda melihat kasir kadang-kadang salah memasukan data sehingga muncul sedikit pesan kesalahan dan kemudian dia mengetik ulang kembali kode barang yang tercantum di barang. Pernahkah Anda berpikir bagaimana komputer bisa tahu bahwa nomor tersebut salah?. Jawabnya adalah dengan menggunakan cek digit, biasanya digit terakhir dari kode barang itu merupakan hasil operasi matematis terhadap digit-digit sebelumnya, sehingga jika ada kesalahan input langsung terdeteksi, misalnya kode barang adalah 98876768532 tetapi yang dimasukkan adalah 98876768533 komputer akan menganggap data ini salah. Andaikan cek digit ini tidak ada, dan setiap kode barang dibuat urut, komputer akan menganggap benar semua data yang dimasukkan, mungkin akan tercantum Anda membeli sebatang coklat Silver Queen padahal yang Anda beli adalah coklat merek lain.
Untuk algoritma cek digit Luhn, sebenarnya saya kurang mengerti sejarah cek digit dengan algoritma ini, tapi algoritma ini dipakai oleh semua bank besar yang mengeluarkan kartu kredit (Visa, MasterCard, Amex, Novus, dan mungkin masih banyak yang lain). Algoritma cek digit ini juga dipakai di kartu-kartu ATM, setidaknya yang sudah saya perhatikan kartu ATM Bank BNI dan BII sepertinya bank yang lain juga menggunakan cara ini. Ketika pihak Telkom memperkenalkan TeCC (Telkom Calling Card), algoritma ini juga dipakai.
Metode cek digit ini sebenarnya sederhana, hanya perlu tiga langkah untuk membuktikan apakah suatu kartu memenuhi algoritma cek digit Luhn, untuk kartu dengan jumlah digit genap (mis Visa [16 digit], MasterCard[16 digit], dan Novus[16 digit]) caranya sebagai berikut :
Untuk (sedikit) memecahkan masalah di atas, nomor kartu kredit telah dirancang sedemikian rupa sehingga memungkinkan dilakukannya pengecekan awal sebelum sebuah nomor diperiksa melalui bank yang bersangkutan. Pengecekan ini adalah pengecekan kombinasi digit yang lazim dikenal dengan nama algoritma cek digit. Algoritma cek digit yang dipakai di kartu kredit adalah algoritma cek digit Luhn (Luhn check digit algorithm).
Algoritma Cek Digit Luhn
Algoritma cek digit merupakan suatu algoritma yang digunakan untuk mengecek validitas suatu angka berdasarkan digit-digit yang membentuknya. Salah satu aplikasi sangat umum yang kita temui dalam kehidupan sehari-hari adalah proses pemasukan data barang belanjaan yang kita beli di supermarket yang kecil (yang masih menggunakan input manual, tidak menggunakan bar code reader). Mungkin kadang-kadang Anda melihat kasir kadang-kadang salah memasukan data sehingga muncul sedikit pesan kesalahan dan kemudian dia mengetik ulang kembali kode barang yang tercantum di barang. Pernahkah Anda berpikir bagaimana komputer bisa tahu bahwa nomor tersebut salah?. Jawabnya adalah dengan menggunakan cek digit, biasanya digit terakhir dari kode barang itu merupakan hasil operasi matematis terhadap digit-digit sebelumnya, sehingga jika ada kesalahan input langsung terdeteksi, misalnya kode barang adalah 98876768532 tetapi yang dimasukkan adalah 98876768533 komputer akan menganggap data ini salah. Andaikan cek digit ini tidak ada, dan setiap kode barang dibuat urut, komputer akan menganggap benar semua data yang dimasukkan, mungkin akan tercantum Anda membeli sebatang coklat Silver Queen padahal yang Anda beli adalah coklat merek lain.
Untuk algoritma cek digit Luhn, sebenarnya saya kurang mengerti sejarah cek digit dengan algoritma ini, tapi algoritma ini dipakai oleh semua bank besar yang mengeluarkan kartu kredit (Visa, MasterCard, Amex, Novus, dan mungkin masih banyak yang lain). Algoritma cek digit ini juga dipakai di kartu-kartu ATM, setidaknya yang sudah saya perhatikan kartu ATM Bank BNI dan BII sepertinya bank yang lain juga menggunakan cara ini. Ketika pihak Telkom memperkenalkan TeCC (Telkom Calling Card), algoritma ini juga dipakai.
Metode cek digit ini sebenarnya sederhana, hanya perlu tiga langkah untuk membuktikan apakah suatu kartu memenuhi algoritma cek digit Luhn, untuk kartu dengan jumlah digit genap (mis Visa [16 digit], MasterCard[16 digit], dan Novus[16 digit]) caranya sebagai berikut :
- untuk setiap digit pada posisi yang ganjil (saya menghitung digit mulai dari kiri dengan yang paling kiri adalah digit ke-1), kalikan nilainya dengan dua, jika hasilnya lebih dari 9, kurangi hasilnya dengan 9. Jumlahkan semua angka yang telah didapat itu.
- untuk setiap digit pada posisi genap, jumlahkan semua nilainya dan tambahkan hasilnya dengan hasil langkah pertama.
- jika hasil pada langkah kedua habis dibagi 10, berarti nomor kartu tersebut sah.
Contoh
|
:
|
|||||
Jika
|
saya
|
punya
|
kartu
|
dengan
|
nomor
|
:
|
7889859454355413
|
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
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 = 7D03 = 8D05 = 8D07 = 9D09 = 5D11 = 3D13 = 5D15 = 1
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 = 8D04 = 9D06 = 5D08 = 4D10 = 4D12 = 5D14 = 4D16 = 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.
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.
Prefix Panjang nomor Jenis Kartu 1800 15 JCB 2131 15 JCB 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 3 16 JCB 4 13/16 Visa 51 16 MasterCard 52 16 MasterCard 53 16 MasterCard 54 16 MasterCard 55 16 MasterCard 56 16 Bankcard 6011 16 Discover
0 komentar:
Post a Comment