Anda di halaman 1dari 8

Penggabungan Dua Metode Kriptografi Klasik Vigenere Cipher dan

Caesar Cipher Untuk Mengoptimalkan Enkripsi Data

Fairuz Elqi Mochammad


2010511104
Prodi Informatika/Fakultas Ilmu Komputer
Universitas Pembangunan Nasional “Veteran” Jakarta
2010511104@mahasiswa.upnvj.ac.id

Abstrak: Kriptografi merupakan ilmu dalam penyandian suatu data agar hanya bisa dibaca oleh pihak-pihak
tertentu saja, ilmu ini sudah berkembang dari era kerajaan. Banyak tercipta metode kriptografi pada era
tersebut seperti Caesar Cipher dan Vigenere Cipher. Metode-metode tersebut termasuk dalam kriptografi
klasik karna sederhana dan mudah dipecahkan. Agar lebih sulit dipecahkan, dibuatlah suatu penggabungan
dari kedua metode tersebut, dimana suatu data akan dienkripsi menggunakan Vigenere Cipher lalu akan
kembali dienkripsi lagi menggunakan Caesar Cipher. Adapun penenkripsian dilakukan dengan dua cara, yaitu
perhitungan manual dan dengan menggunakan program yang dibuat dengan bahasa Python. Didapatkan hasil
yang sama dari kedua cara tersebut sehingga metode gabungan berhasil dikembangkan dan bisa dilakukan
dengan dua cara. Dari metode ini, diharapkan data bisa lebih aman dan lebih terjaga.
Kata Kunci: Kriptografi Klasik, Caesar Cipher, Vigenere Cipher, Program Kriptografi Python

1 Pendahuluan

1.1 Latar Belakang

Kriptografi merupakan ilmu yang telah dikembangkan sejak zaman dahulu, dimana ilmu tersebut
digunakan dalam bidang penyandian dengan suatu teknik tertentu dengan dasar mengubah plaintext menjadi
ciphertext yang bisa dienkripsi dan didekripsi. Banyak sekali teknik yang telah dikembangkan dalam kriptografi,
baik dari masa klasik maupun masa modern.

Pada makalah ini, penulis akan menggabungkan kedua metode dari kriptografi klasik dengan maksud
untuk mengoptimalkan kedua metode tersebut serta memperkuat keamanan pada data yang dienkripsi. Adapun
kedua metode yang akan digabungkan tersebut yaitu vigenere cipher dan caesar cipher dimana suatu teks pada
tahap pertama akan dienkripsi menggunakan vigenere cipher lalu akan kembali dienkripsi menggunakan caesar
cipher.

1.2 Tujuan

Tujuan dibuatnya makalah ini adalah untuk menciptakan suatu cara baru dalam mengenskripsikan teks
atau data serta mengoptimalkan penggunaan dari dua metode dalam kriptografi klasik yaitu caesar cipher serta
vigenere cipher dengan dilakukan penggabungan metode dalam pengenkripsian suatu plaintext

1.3 Deskripsi Teori

1. Hakikat Kriptografi
Kriptografi merupakan gabungan dari dua kata bahasa Yunani, yaitu kryptos yang berarti rahasia atau
tersembunyi dan graphein yang berarti menulis. Dan dapat diartikan bahwa kriptografi adalah suatu cara
komunikasi berupa menulis pesan yang tidak dapat dimengerti oleh sembarang orang kecuali si pengirim dan
penerima pesan.
Dalam dunia digital seperti sekarang, arti yang lebih tepat dari kriptografi yaitu suatu disiplin ilmu yang
berhubungan dengan merubah suatu plaintext menjadi ciphertext dengan teknik tertentu yang memanfaatkan
suatu kunci enkripsi.

2. Caesar Cipher
Dibuat pada zaman Julius Caesar, seorang tiran Romawi pada abad pertama masehi, Caesar Cipher
dulunya digunakan untuk kepentingan komunikasi antara dirinya dengan jenderal-jenderal perangnya kala itu.
Dikarnakan banyak dari lawannya yang buta huruf, metode ini seringkali efektif sehingga banyak digunakan
oleh pasukan Romawi saat terjadi peperangan.
Caesar Cipher saat ini sudah sangat terkenal dan juga sebenarnya hanya merupakan sandi yang dibentuk
secara sederhana dengan memanfaatkan huruf-huruf yang ada dimana tiap hurufnya akan disubstitusi dengan
huruf lainnya tergantung dari kunci yang ditentukan. Misal kata “BAIK” akan dienkripsi dengan kunci 3,
sehingga kata tersebut berubah menjadi “EDLN” karna huruf pada kata yang belum dienkripsi setiap hurufnya
digeser 3 huruf.

Gambar. 1.1 Caesar Cipher dengan pergeseran 3 kunci

Untuk memperjelas cara kerja dari Caesar Cipher, dapat dibuat suatu ilustrasi dari deretan huruf baik
sebelum diberi kunci dan sesudah diberi kunci. Sebagai contoh, akan digunakan kunci 3 pada huruf alfabet
sehingga akan seperti sebagai berikut:

Alfabet biasa:
ABCDEFGHIJKLMNOPQRSTUVWXYZ

Alfabet sandi:
DEFGHIJKLMNOPQRSTUVWXYZABC

Adapun cara lain yang dapat dilakukan selain membandingkan kedua alfabet dalam menenkripsikan
plaintext bisa melalui rumus matematis dengan memisalkan bahwa A=0, B=1, C=2 hingga terakhir Z=25.
Selanjutnya, digunakan operasi modulus pada permisalan tersebut sehingga menghasilkan rumus enkripsi seperti
berikut:
En(x) = (x+n) mod 26 (1)
Sedangkan untuk pendekripsian suatu ciphertext pada metode ini, dapat digunakan rumus:
Dn(x) = (x-n) mod 26 (2)
Dari rumus tersebut, x merupakan urutan huruf alfabet awal dan n merupakan kunci, dan nantinya hasil
pertambahan ataupun pengurangan setelah di modulus dengan 26 tersebut adalah angka urutan huruf yang
merupakan jawaban dari peenkripsian atau pendekripsian suatu teks.

3. Vigenere Cipher
Metode ini pertama kali diperkenalkan oleh Giovan Batista Belasi dalam bukunya yang berjudul La
cifra del Sig Giovan Batista Belaso (1553) lalu disempurnakan oleh Blaise de Vigenere pada tahun 1586 yang
merupakan diplomat Prancis. Disebut Vigenere Cipher karna banyak yang menyangka bahwa sandi ini
diciptakan oleh Vigenere.
Vigenere Cipher sebetulnya juga merupakan pengembangan dari Caesar Cipher karna metode yang
hampir mirip, yaitu menggunakan pergeseran huruf, namun yang membedekan adalah metode ini, alih-alih
Penggabungan Dua Metode Kriptografi Klasik Vigenere Cipher dan Caesar Cipher Untuk Mengoptimalkan
Enkripsi Data

menggunakan satu kunci huruf, Vigenere Cipher menggunakan suatu kata yang akan disejajarkan dengan
plainttext dan bersifat berulang tiap akhir katanya. Vigenere Cipher juga merujuk pada suatu tabel yang disebut
tabula recta dengan ukuran matriks 26 * 26 yang terdiri dari 26 alfabet yang ditulis 26 kali perbarisnya.

Gambar. 2.2 Tabel Vigenere

Vigenere Cipher juga dapat dibentuk secara matematis dengan prinsip yang mirip dengan Caesar Cipher,
yaitu memanfaatkan penambahan atau pengurangan pada huruf awal dengan huruf kunci lalu di modulus dengan
26. Rumus dari peenkripsian Vigenere Cipher dapat dilihat sebagai berikut.
Ci = (Pi + Ki) mod 26 (3)
Sementara untuk pendekripsian digunakan rumus:
Pi = (Ci - Ki) mod 26 (4)

Sekarang mari kita coba menenkripsikan sebuah kata dengan Vigenere Cipher, contoh kata yang akan
kita gunakan yaitu “CINTA” dengan kunci “KAMU” sehingga didapatkan:

Kata Awal:
CINTA

Kata Kunci:
KAMUK

Ciphertext:
MIZNK

Dapat dilihat bahwa huruf C apabila digeser sebanyak K akan menghasilkan huruf M seperti yang
dilihat pada Tabel Vigenere dan seterusnya. Apabila dilakukan perhitungan dengan rumus, akan didapatkan
seperti sebagai berikut.
Ci = (Pi + Ki) mod 26 (5) Ci = (2 + 10) mod 26 (6) Ci = (8 + 0) mod 26 (8)
Ci = (12) mod 26 = 12 (7) Ci = (8) mod 26 = 8 (9)

Ci = (13 + 12) mod 26 (10) Ci = (19 + 20) mod 26 (12)


Ci = (25) mod 26 = 25 (11) Ci = (39) mod 26 = 13 (13)

Ci = (0 + 10) mod 26 (14)


Ci = (10) mod 26 = 10 (15)

Dari perhitungan tersebut didapatkan suatu kata MIZNK sehingga rumus enkripsi terbukti benar karna
hasil yang didapatkan sama dengan cara enkripsi lewat Tabel Vigenere.

2 Hasil dan Pembahasan

Pada bab ini, akan dilakukan suatu perhitungan manual dan menggunakan program komputer yang
ditulis dengan bahasa Python dari suatu plaintext menjadi ciphertext dengan dua metode sekaligus, dimulai
dengan enkripsi menggunakan Vigenere Cipher, lalu teks akan dienkripsi lagi dengan menggunakan Caesar
Cipher

2.1 Proses Penyandian

Akan dilakukan proses penyandian terhadap suatu teks awal yaitu “UPNVETERAN” dengan kunci
Vigenere yaitu “UPN” dan selanjutnya dengan kunci Caesar yang telah ditetapkan yaitu 21. Akan dihasilkan
suatu ciphertext yang baik dihitung secara manual maupun secara program.
1) Perhitungan Manual
a) Vigenere Cipher
Plaintext : UPNVETERAN
Kunci : UPN

Tabel 2.0 Proses Enkripsi Vigenere Cipher


U P N V E T E R A N
20 15 13 21 4 19 4 17 0 13
U P N U P N U P N U
20 15 13 20 15 13 20 15 13 20

Ci = (Pi + Ki) mod 26 = (20+20) mod 26 = 40 mod 26 = 14 (O) (16)


Ci = (Pi + Ki) mod 26 = (15+15) mod 26 = 30 mod 26 = 4 (E) (17)
Ci = (Pi + Ki) mod 26 = (13+13) mod 26 = 26 mod 26 = 0 (A) (18)
Ci = (Pi + Ki) mod 26 = (21+20) mod 26 = 41 mod 26 = 15 (P) (19)
Ci = (Pi + Ki) mod 26 = (4+15) mod 26 = 19 mod 26 = 19 (T) (20)
Ci = (Pi + Ki) mod 26 = (19+13) mod 26 = 32 mod 26 = 6 (G) (21)
Ci = (Pi + Ki) mod 26 = (4+20) mod 26 = 24 mod 26 = 24 (Y) (22)
Ci = (Pi + Ki) mod 26 = (17+15) mod 26 = 32 mod 26 = 6 (G) (23)
Ci = (Pi + Ki) mod 26 = (0+13) mod 26 = 13 mod 26 =13 (N) (24)
Ci = (Pi + Ki) mod 26 = (13+20) mod 26 = 33 mod 26 = 7 (H) (25)

Telah didapat suatu ciphertext menggunakan Vigenere Cipher yang hasilnya


“OEAPTGYGNH”. Selanjutnya, ciphertext tersebut akan kembali dienkripsi menggunakan
metode Caesar Cipher agar keamanan teks lebih kuat dan terjaga.

b) Caesar Cipher
Penggabungan Dua Metode Kriptografi Klasik Vigenere Cipher dan Caesar Cipher Untuk Mengoptimalkan
Enkripsi Data

Plaintext : OEAPTGYGNH
Kunci : 21

Tabel 2.1 Proses Enkripsi Caesar Cipher


O E A P T G Y G N H
14 4 0 15 19 6 24 6 13 7

En(x) = (x+n) mod 26 = (14+21) mod 26 = 35 mod 26 = 9 (J) (26)


En(x) = (x+n) mod 26 = (4+21) mod 26 = 25 mod 26 = 25 (Z) (27)
En(x) = (x+n) mod 26 = (0+21) mod 26 = 21 mod 26 = 21 (V) (28)
En(x) = (x+n) mod 26 = (15+21) mod 26 = 36 mod 26 = 10 (K) (29)
En(x) = (x+n) mod 26 = (19+21) mod 26 = 40 mod 26 = 14 (O) (30)
En(x) = (x+n) mod 26 = (6+21) mod 26 = 27 mod 26 = 1 (B) (31)
En(x) = (x+n) mod 26 = (24+21) mod 26 = 45 mod 26 = 19 (T) (32)
En(x) = (x+n) mod 26 = (6+21) mod 26 = 27 mod 26 = 1 (B) (33)
En(x) = (x+n) mod 26 = (13+21) mod 26 = 34 mod 26 = 8 (I) (34)
En(x) = (x+n) mod 26 = (7+21) mod 26 = 28 mod 26 = 2 (C) (35)

Dari enkripsi tersebut didapatkan hasil akhir dari enkripsi yaitu “JZVKOBTBIC” dengan
menggunakan perhitungan manual. Selanjutnya akan digunakan suatu program komputer yang
dibuat menggunakan bahasa Python untuk menguji perhitungan manual serta untuk mempermudah
enkripsi-enkripsi lainnya.

2) Perhitungan Program
a) Flowchart dan Source Code
Program dibuat dengan bantuan aplikasi Visual Studio Code dengan menggunakan bahasa
Python. Sebelum dituangkan ke dalam bentuk program, dibuat suatu flowchart dari program untuk
memudahkan pembuatan seperti pada gambar berikut ini.

Gambar 2.1 Flowchart dari program

Adapun program dari flowchart yang telah dibuat akan terlihat sebagai berikut:

print("Menu : ")
print("1) Enkripsi")
print("2) Dekripsi")
na = 0
while na == 0:
pilihan = input("Pilih menu: ")

if pilihan == "1":
na = 1

def generateKey(string, key):


key = list(key)
if len(string)==len(key):
return(key)
else:
for i in range(len(string)-len(key)):
key.append(key[i%len(key)])
return("".join(key))

def cipherText(string, key):


cipher_text = []
for i in range(len(string)):
x = (ord(string[i])+ ord(key[i]))%26
x += ord('A')
cipher_text.append(chr(x))
return("".join(cipher_text))

if __name__ == "__main__":
string = input("Masukkan teks : ")
keyword = input("Masukkan kunci vigenere : ")
key = generateKey(string, keyword)
cipher_text = cipherText(string,key)

def enkripsi(text, s):


result = " "

for i in range(len(text)):
char = text[i]
if(char.isupper()):
result += chr((ord(char)+s-65)%26+65)
else:
result += chr((ord(char)+s-97)%26+97)
return result

text = (cipher_text)
s = int(input("Masukkan kunci caesar: "))
print("Ciphertext : "+ enkripsi(text,s))

elif pilihan == "2":


Penggabungan Dua Metode Kriptografi Klasik Vigenere Cipher dan Caesar Cipher Untuk Mengoptimalkan
Enkripsi Data

na = 2
def dekripsi(text, s):
result = ""

for i in range(len(text)):
char = text[i]

if(char.isupper()):
result += chr((ord(char)-s-65)%26+65)
else:
result += chr((ord(char)-s-97)%26+97)
return result
text = input("Masukkan Ciphertext : ")
s = int(input("Masukkan kunci caesar : "))
result = dekripsi(text,s)

def generateKey(string, key):


key = list(key)
if len(string)==len(key):
return(key)
else:
for i in range(len(string)-len(key)):
key.append(key[i%len(key)])
return("".join(key))

def plainTeks(string, key):


plaint_teks = []
for i in range(len(string)):
x = (ord(string[i])-ord(key[i]))%26
x += ord('A')
plaint_teks.append(chr(x))
return("".join(plaint_teks))

if __name__ == "__main__":
string = (result)
keyword = input("Masukkan kunci vigenere : ")
key = generateKey(string,keyword)
plain_teks = plainTeks(string,key)
print("Plaintext : ", plain_teks)

b) Pengujian Source Code


Program akan diuji sebanyak 1 kali dengan kata serta kunci yang sama dengan tujuan untuk
mendapatkan nilai ciphertext yang sama seperti pada perhitungan manual. Tampilannya akan
terlihat seperti berikut:

Gambar 2.2 Tampilan Awal Program

Gambar 2.3 Menginput plaintext serta kunci untuk enkripsi teks

Gambar 2.3 Hasil enkripsi dari program

Dapat dilihat pengujian akan menghasilkan ciphertext dengan nilai sama seperti pada
perhitungan manual sehingga program yang dibuat berhasil dalam penggabungan dua metode
kriptografi yaitu gabungan antara Vigenere Cipher dan Caesar Cipher.

3 Kesimpulan

Dari makalah singkat ini, telah dilakukan suatu pengoptimalan dalam metode kriptografi klasik yaitu
Vigenere Cipher dan Caesar Cipher, dengan dilakukannya enkripsi data melalui dua tahapan tersebut. Kemudian
dilakukan dua cara untuk bisa menyelesaikan tahapan tersebut, yang pertama dengan perhitungan manual dan
kedua dengan perhitungan program yang dibuat dengan bahasa Python. Dihasilkan suatu ciphertext yang sama
melalui kedua cara tersebut sehingga dapat disimpulkan bahwa enkripsi berhasil dan data yang dienkripsi akan
menjadi lebih aman dan terjaga karna telah dimodifikasi menggunakan kedua metode tersebut.

4 Referensi

[1] Doni, & Abu Walad (2012). Caesar Cipher Vs Vigenere. Bandung.
http://jurnal.lpkia.ac.id/index.php/jkb/article/view/92/81
[2] Ochoche Abraham, & Ganiyu O. Shefiu (2012). An Improved Caesar Cipher (ICC) Algorithm. Nigeria.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.300.6206&rep=rep1&type=pdf
[3] Adnan Buyung Nasution (2019). Implementasi Pengamanan Data Dengan Menggunakan Algoritma Caesar Cipher dan
Transposisi Cipher. Sumatra Utara
[4] Md. Khalid Imam Rahmani, Neeta Wadhwa, & Vaibhav Malhotra (2012). Alpha-Qwerty Cipher: An Extended
Vigenere Cipher. India. https://www.researchgate.net/profile/Dr-Md-Khalid-Rahmani/publication/276196004_Alpha-
Qwerty_Cipher_An_Extended_Vigenere_Cipher/links/5555b0a208ae6fd2d821de69/Alpha-Qwerty-Cipher-An-
Extended-Vigenere-Cipher.pdf
[5] Muhammad Fairuzabadi (2010). Implementasi Kriptografi Klasik Menggunakan Borland Delphi. Yogyakarta.
[6] Siti Julianita Siregar, Muhammad Zarlis, & Zakarias Situmorang (2019). Analisis Kriptografi Klasik Dengan
Perhitungan Manual Menggunakan Metode Vigenere dan Menggunakan Aplikasi Kryptool. Sumatra Utara.
http://bulletin.indoms-acehsumut.org/index.php/simantap/article/view/262/195

Anda mungkin juga menyukai