Berikut adalah implementasi program enkripsi dan dekripsi sederhana di C++ menggunakan metode substitusi Caesar Cipher. Metode ini menggantikan setiap huruf dalam teks dengan huruf lain berdasarkan pergeseran tertentu.
Kode Lengkap
#include <iostream>
#include <string>
using namespace std;
// Fungsi untuk mengenkripsi teks
string enkripsi(string teks, int kunci) {
string hasil = "";
for (char c : teks) {
if (isalpha(c)) { // Periksa apakah karakter adalah huruf
char batas = isupper(c) ? 'A' : 'a';
c = (c - batas + kunci) % 26 + batas;
}
hasil += c; // Tambahkan karakter ke hasil
}
return hasil;
}
// Fungsi untuk mendekripsi teks
string dekripsi(string teks, int kunci) {
return enkripsi(teks, 26 - (kunci % 26)); // Balikkan pergeseran
}
// Menu utama
int main() {
int pilihan, kunci;
string teks, hasil;
do {
cout << "\n=== Program Enkripsi dan Dekripsi ===\n";
cout << "1. Enkripsi\n";
cout << "2. Dekripsi\n";
cout << "3. Keluar\n";
cout << "Pilih opsi: ";
cin >> pilihan;
cin.ignore(); // Membersihkan buffer input
switch (pilihan) {
case 1:
cout << "Masukkan teks untuk dienkripsi: ";
getline(cin, teks);
cout << "Masukkan kunci (angka): ";
cin >> kunci;
hasil = enkripsi(teks, kunci);
cout << "Hasil enkripsi: " << hasil << "\n";
break;
case 2:
cout << "Masukkan teks untuk didekripsi: ";
getline(cin, teks);
cout << "Masukkan kunci (angka): ";
cin >> kunci;
hasil = dekripsi(teks, kunci);
cout << "Hasil dekripsi: " << hasil << "\n";
break;
case 3:
cout << "Terima kasih telah menggunakan program ini!\n";
break;
default:
cout << "Pilihan tidak valid. Coba lagi.\n";
break;
}
} while (pilihan != 3);
return 0;
}
Penjelasan Kode
- Enkripsi
- Fungsi
enkripsi
melakukan pergeseran huruf berdasarkan kunci. - Jika karakter adalah huruf (
isalpha
), huruf tersebut diproses. - Pergeseran dihitung menggunakan modulus (
%
) untuk memastikan tetap dalam alfabet (26 huruf). - Penanganan huruf besar (
A-Z
) dan kecil (a-z
) dilakukan menggunakan batas awal (A
ataua
).
- Fungsi
- Dekripsi
- Fungsi
dekripsi
membalikkan proses enkripsi dengan mengurangi pergeseran menggunakan(26 - kunci)
.
- Fungsi
- Menu Utama
- Memberikan antarmuka untuk pengguna memilih enkripsi, dekripsi, atau keluar.
- Input teks menggunakan
getline
untuk menangani spasi.
Contoh Output
=== Program Enkripsi dan Dekripsi ===
1. Enkripsi
2. Dekripsi
3. Keluar
Pilih opsi: 1
Masukkan teks untuk dienkripsi: Halo Dunia
Masukkan kunci (angka): 3
Hasil enkripsi: Kdor Gxqld
=== Program Enkripsi dan Dekripsi ===
1. Enkripsi
2. Dekripsi
3. Keluar
Pilih opsi: 2
Masukkan teks untuk didekripsi: Kdor Gxqld
Masukkan kunci (angka): 3
Hasil dekripsi: Halo Dunia
Fitur Tambahan
- Pilih Metode Enkripsi: Tambahkan opsi untuk menggunakan metode enkripsi lainnya seperti XOR Cipher atau Vigenère Cipher.
- Penyimpanan File: Simpan teks yang terenkripsi/dekripsi ke file menggunakan pustaka
fstream
. - Validasi Input: Tangani input kunci atau teks yang salah (misalnya, kunci negatif).
Jika Anda ingin penyesuaian atau tambahan fitur lainnya, beri tahu saya! 😊
Leave a Reply