|
Algoritma
Cek Digit Pada Kartu Kredit
Oleh
: Yohanes
Nugroho
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.
Mudah
bukan?, untuk kartu dengan jumlah digit yang ganjil
(misalnya Visa [13 digit], Amex [15 digit]) caranya
sama, hanya saja pada langkah pertama yang dikalikan
adalah digit pada posisi genap, dan pada langkah
kedua yang dijumlahkan adalah digit pada posisi
ganjil.
|