Program Enkripsi dan Dekripsi Sederhana di C++

Program Enkripsi dan Dekripsi Sederhana di C++

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

  1. 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 atau a).
  2. Dekripsi
    • Fungsi dekripsi membalikkan proses enkripsi dengan mengurangi pergeseran menggunakan (26 - kunci).
  3. 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

Your email address will not be published. Required fields are marked *