Implementasi Algoritma Luhn dalam Bahasa Pemrograman C++ : Membuat Program Validasi Nomor Kartu Kredit
Kali ini penulis akan membahas bagaimana cara membuat program validasi nomor kartu kredit menggunakan algoritma Luhn dalam bahasa pemrograman C++. Singkatnya, algoritma Luhn adalah algoritma yang diciptakan oleh Hans Peter Luhn pada tahun 1954. Saat itu ia adalah seorang peneliti di perusahaan perangkat lunak dan perangkat keras IBM. Algoritma Luhn, saat ini masih banyak digunakan oleh berbagai instansi pemerintahan maupun perusahaan untuk melakukan validasi nomor kartu identitas, nomor kartu kredit, nomor transaksi pada pembayaran elektronik dan kebutuhan-kebutuhan validasi lainnya.
Cara Kerja Algoritma Luhn
Sebagai contoh penulis akan menggunakan nomor kartu kredit : 4388576018402626 (Sebelumnya perlu diingat bahwa nomor kredit yang digunakan sebagai contoh tersebut bukanlah merupakan nomor kredit yang sebenarnya).1. Dimulai dari kanan ke kiri, untuk semua digit angka yang posisinya genap, kalikan dengan dua. Jika hasil dari digit angka dikali 2 menghasilkan nilai 2 digit (lebih dari 9) maka jumlahkan kedua digit tersebut agar menjadi 1 digit angka. Lebih jelasnya silahkan lihat pada gambar berikut:
2. Tambahkan semua digit angka dari langkah pertama.
4 + 4 + 8 + 2 + 3 + 1 + 7 = 37
3. Dimulai dari kanan ke kiri, jumlahkan semua digit angka yang posisinya ganjil
6 + 6 + 0 + 8 + 0 + 7 + 8 + 3 = 38
4. Jumlahkan hasil dari langkah ke dua dengan hasil dari langkah ketiga
37 + 38 = 75;
5. Jika hasil dari langkah ke 4 habis dibagi 10, maka nomor kartu kredit tersebut valid dan bisa digunakan; sedangkan apabila sebaliknya maka nomor kartu kredit tersebut tidak valid. Dapat disimpulkan nomor kartu kredit 4388576018402626 setelah dicek menggunakan Algoritma Luhn bukanlah merupakan nomor kartu kredit yang valid sehingga tidak dapat digunakan untuk dijadikan nomor sebuah kartu kredit.
Menerapkan Algoritma Luhn dengan C++
Berikut ini adalah sebuah source code yang merupakan penerapan algoritma Luhn dalam bahasa pemrograman C++
#include <iostream>
using namespace std;
int getDigit(int number){
int num2, r, sum=0;
num2 = number;
// if more 2 digit then sum the all entire digit
if(number >= 10){
while (number > 0) {
r = number % 10; // 4
number = number / 10; // 3
sum = sum + r; // 4
}
return sum;
// if just one digit return itself
} else {
return number;
}
}
int sumOfDoubleEvenPlace(const string& cardNumber) {
int sum;
for(int i = cardNumber.length() - 1; i >= 0;i--){
if(i % 2 == 0){
int num = cardNumber[i] - '0';
num = num * 2;
if(num >= 10){
num = getDigit(num);
}
sum = sum + num;
}
}
return sum;
}
bool startsWith(const string& cardNumber, const string& substr){
string prefixOfCardNumber;
bool isPrefix = false;
for(int i =0; i < 4;i++){
prefixOfCardNumber += cardNumber[i];
}
(prefixOfCardNumber == substr) ? isPrefix = true : isPrefix = false;
return isPrefix;
}
int sumOfOddPlace(const string& cardNumber) {
int sum;
for(int i = cardNumber.length() - 1; i >= 0; i--){
if(i % 2 != 0){
int num = cardNumber[i] - '0';
sum = sum + num;
}
}
return sum;
}
int main(){
string creditCardVisa;
string creditCardPrefix = "4388";
int sumA,sumB, result;
cout << "Masukkan nomor kartu kredit : ";
cin >> creditCardVisa;
if(startsWith(creditCardVisa, creditCardPrefix)){
sumA = sumOfDoubleEvenPlace(creditCardVisa);
sumB = sumOfOddPlace(creditCardVisa);
result = sumB;
if(result % 10 == 0){
cout << "Selamat, Nomor kartu kredit ini valid";
} else {
cout << "Nomor kartu kredit tidak valid";
}
} else {
cout << "Nomor kartu kredit tidak valid";
}
}
// catatan
// contoh nomor kartu kredit yang valid untuk inputan : 4388576018410707
Post a Comment for "Implementasi Algoritma Luhn dalam Bahasa Pemrograman C++ : Membuat Program Validasi Nomor Kartu Kredit"