Algoritma Caesar Cipher: Konsep dan Implementasi dengan Pemrograman C++

Table of Contents
Jika belajar mengenai ilmu kriptografi, algoritma populer yang harus diketahui adalah Caesar Cipher. Konon, diberi nama demikian karena digunakan oleh kaisar Romawi, Julius Caesar untuk menyandikan pesan yang ia kirim ke para gubenurnya.

Penggunaan Caesar Cipher pada masa Romawi menunjukkan kemajuan peradabannya. Padahal di masa itu, pengubahan plainteks menjadi cipherteks maupun sebaliknya, amatlah rumit. Semua serba manual. Jangankan komputer, lisrik saja belum ditemukan. Itulah sebabnya jika dibandingkan demgan algoritma lain di zaman modern ini, Caesar Cipher dianggap sebagai metode kriptografi paling sederhana, paling lemah dan paling mudah dibobol dengan brute force attack.

Kalau dipikir-pikir, untung juga kriptografi zaman romawi masih Caesar Cipher, coba udah ditemukan fungsi hash. Bisa puyeng tuh para gubenur.

Caesar Cipher tergolong cipher substitusi. Maksudnya, setiap unit plainteks diganti dengan satu unit cipherteks. Satu unit bisa berupa huruf, pasangan huruf, atau kelompok huruf. 

Contohnya begini, tiap huruf plainteks disubstitusi dengan huruf ke tiga belas berikutnya dari susunan alphabet. Aturan subsitusi tertuang pada Gambar 1.  
Gambar 1. Contoh tabel Substitusi Caesar Cipher
Maka, jika plainteks adalah HELLO, maka tiap huruf pada plainteks digeser sesuai aturan subsitusi sehingga membentuk cipherteks URYYB.

Persegeran sejauh 13 ini bisa dianggap sebagai kunci k untuk enkripsi maupun dekripsi. Dengan demikin. fungsi enkripsi Caesar Cipher dapat dirumuskan dengan
C = E(P) = (P+k) mod 26

dan fungsi dekripsi menjadi
P=D(C) = (C-k) mod 26

Tentu fungsi tersebut bisa dikembangkan lagi. Jika hanya terbatas mod 26, tentu kompleksitas kriptografi menjadi sangat rendah. Karena mod 26 menunjukkan jumlah alphabet. Bisa saja mod 26 ini diganti sesuai karakter yang terpampang pada keyboard komputer kekinian. Karakter modern ini mengacu ke ASCII (American Standart Code for Information Interchange). Sebanyak 256 karakter. Dari karakter ke 0 hingga ke 255. Jadi mod-nya akan berubah dari 26 ke 256. Sehingga kompleksitas terangkat, walau sedikit.

Kalau zaman romawi menerapkan mod 26 ya wajar banget. Sesuai dengan teknologi zaman itu. Mod 26 pada Caesar Cipher dapat digunakan sebagai latihan untuk menerapkan algoritma kriptografi dalam bahasa pemrograman. 

Berikut ini contoh implementasi Caesar Cipher menggunakan pemrograman C++. InsyaAllah di artikel lain, saya tunjukkan implementasi Caesar Cipher menggunakan pemrograman java berdasarkan 256 karakter ASCII.  

// Program Enkripsi dan Dekripsi Teks menggunakan Algoritma Caesar Cipher

#include <iostream>
#include <string.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

void enkripsi(){
 //string K; 
 string plainteks, cipherteks;
 int i, k;
 char c;
 
 cout<< "Ketikkan pesan: ";
 cin.ignore(); 
 getline(cin,plainteks);
 cout<< "Masukkan jumlah pergeseran (0-25): ";
 cin >> k;
 
 for(i =0; i<plainteks.length(); i++){
  c = plainteks[i];
  if(isalpha(c)){
   c= toupper(c);
   c=c-65;
   c=(c+k)%26;
   c=c+65;
  }
  cipherteks=cipherteks+c;
 } 
 cout<<"Cipherteks: "<< cipherteks<<endl;
}

void dekripsi(){
 string plainteks, cipherteks;
 int i, k;
 char c;
 

 cout<< "Ketikkan cipherteks: "; 
 cin.ignore();
 getline(cin, cipherteks);
 
 cout << "Masukkan jumlah pergeseran (0-25): ";
 cin >>k;
 
 for(i=0;i<cipherteks.length() ; i++){
  c= cipherteks[i];
  if(isalpha(c)){
   c= toupper(c);
   c= c-65;
   if(c-k<0){
    c=26+(c-k);
   }else{
    c=(c-k)%26;
    c=c+65;
    c= tolower(c);
   }
   plainteks=plainteks+c;
  }
  cout<< "plainteks: " << plainteks<<endl;
 }
}

int main() {
 int pil; bool stop;
 stop = false ;
 while(!stop){
  cout << "menu " << endl;
  cout << "1. enkripsi " << endl;
  cout << "2. dekripsi " << endl;
  cout << "3. exit " << endl;
  cout << "pilih menu "; cin>> pil;
  switch(pil){
   case 1: enkripsi();break;
   case 2: dekripsi(); break;
   case 3: stop=true; break;
  }
 }
}


Jika source code tersebut di-compile dan di-run. Tampil output konsole sebagaimana Gambar 2. 

Gambar 2. Implementasi Caesar Cipher dengan C++

Demikian uraian singkat ini. Semoga memberi manfaat bagi para penuntut ilmu di bidang kriptografi. Ayo berdiskusi jika ada pertanyaan lanjutan. 

Tambahan materi via Youtube tentang step by step ngoding Algoritma Cesar Cipher menggunakan Pemrograman Java. Penjelasan dibagi dua, penjelasan pertama fokus ngoding enkripsi, berikutnya adalah dekripsi. 

Proses Enkripsi



Proses Dekripsi




Referensi:
R. Munir. 2019. Kriptografi. Bandung: INFORMATIKA. Edisi Kedua 


3 comments

Terima kasih telah mampir di blog kami. Jika ingin menghubungi penulis, silakan kirim pesan via email di kitainformatika@gmail.com atau via WA di 087750503014. Jika mood penulis lagi baik, biasanya fast respon.
Comment Author Avatar
July 8, 2020 at 1:01 PM Delete
Luar biasa Prof
Comment Author Avatar
July 8, 2020 at 1:58 PM Delete
Yang luar biasa adalah ketika Prof. Bahasa berkunjung ke situs ilmu komputer, prof
Comment Author Avatar
December 1, 2021 at 7:36 PM Delete
ruar bisa penjelasanya..