Uploaded by User83902

IMPLEMENTASI ALGORITMA KRIPTOGRAFI CAESAR CHIPER DAN AFFINE CHIPER

advertisement
IMPLEMENTASI ALGORITMA KRIPTOGRAFI CAESAR CHIPER DAN AFFINE CHIPER
SEBAGAI KEAMANAN DATA APLIKASI RESTORAN
Henny Vera Ningsih1, Novisa Rahmadani2, Pangeran Nicka3, Wandi Wahyudi4, H.Mhd
Arief Hasan M.kom5
Program Studi Teknik Informatika Fakultas Ilmu Komputer Universitas Lancang Kuning
Jl.Yos Sudarso KM.8 Rumbai, Pekanbaru, Riau, telp. 0811 753 2015
e-mail: 1 [email protected], 2 [email protected], 3
[email protected], 4 [email protected]
Abstrak
Salah satu aspek penting dari pengolahan data adalah masalah keamanan data dan
kerahasiaan data. Adanya pencurian data dan penyalahgunaan data oleh kelompok
yang tidak bersangkutan menyebabkan data tidak terjaga lagi. Oleh karena itu,
dibutuhkan suatu keamanan yang bisa membuat data aman dari kelompok yang
tidak bersangkutan. Data - data yang terdapat dalam suatu sistem pengolahan data
diharapkan untuk mengamankan pihak yang tidak berhak tidak dapat
mengaksesnya. Berdasarkan masalah tersebut, diperlukan teknik untuk
mengamankan data. Teknik yang dikenal dapat digunakan untuk
mengamankan data yaitu Kriptografi. Adapun algoritma kriptografi yang
mudah untuk diterapkan namun mempunyai tingkat keamanan yang baik yaitu
Caesar Chiper dan Affine Chiper.
Kata Kunci - Pencurian Data, Keamanan Data, Caesar Chiper, Affine Chiper
Abstract
One of the important aspects of data processing is the issue of data security and
data confidentiality. The existence of data theft and data misuse by unrelated
groups causes data to be no longer maintained. Therefore, we need a security that
can make data safe from unrelated groups. The data contained in a data processing
system is expected to protect unauthorized parties from accessing it. Based on
these problems, techniques are needed to secure data. A known technique that can
be used to secure data is cryptography. The cryptographic algorithms that are easy
to implement but have a good level of security are Caesar Chiper and Affine Chiper.
Keywords - Data Theft, Data Security, Caesar ChiperAffine Cipher
1.
PENDAHULUAN
Keamanan dan kerahasiaan data atau informasi merupakan salah satu aspek yang
penting dari suatu data atau informasi. Dengan perkembangan teknologi saat ini,
setiap orang akan mudah memperoleh data atau informasi. Apabila data atau
informasi tersebut tidak dilindungi, maka secara mudah orang lain akan
mengetahui data atau informasi yang dimiliki. Berbagai cara pun dilakukan untuk
melindungi data atau informasi tersebut.
Ilmu yang mempelajari tentang proses pengamanan data atau informasi adalah
kriptografi. Kriptografi (cryptographi) berasal dari Bahasa Yunani: “cryptos” artinya
“secret” (rahasia). Sedangkan “graphein” artinya “writing” (tulisan).Dimana
pemanfaatan kriptografi oleh manusia sejak empat abad lalu. Secara umum ada dua
jenis kriptografi, yaitu: kriptografi klasik dan kriptografi modern.
Kriptografi klasik telah digunakan digunakan sebelum era komputer. Pada
penelitian ini menggunakan kriptografi klasik. Kriptografi klasik umumnya
merupakan teknik penyandian dengan kunci tertentu dan menyembunyikan pesan
yang memiliki arti ke sebuah pesan yang tidak memiliki arti.
Adanya ketergantungan terhadap komputer dalam berbagai bidang membuat
perpindahan informasi menjadi semakin cepat. Perpindahan informasi tersebut
terkadang tidak diiringi oleh keamanan data yang sesuai. Pengamanan data
menjadi sangat penting karena kemungkinan penggunaan file oleh orang lain yang
tidak berwenang menjadi lebih besar.Berbagai teknik sering digunakan untuk
mengamankan data, salah satunya yaitu kriptografi.
Di Indonesia, kriptografi dikenal sebagai teknik penyandian untuk
menyandikan data serta informasi dari pihak-pihak yang sekiranya tidak
berwenang. Data yang ada atau terkandung pada file tersebut dienkripsi menjadi
beberapa simbol tertentu sehingga pihak berwenang saja yang dapat mengetahui
data/informasi hasil enkripsi. Pengertian lain dari kriptografi dikenal sebagai ilmu
untuk mempelajari cara penyandian data untuk memperoleh kerahasiaan, integritas
dan autentikasi data.
Dalam kriptografi terdapat dua konsep utama, yaitu: enkripsi dan dekripsi.
Proses kriptografi secara umum disajikan seperti Gambar 1.
Plainteks
Chiperteks
Enkripsi
Dekripsi
Plainteks
Gambar 1. Proses Enkripsi Deksripsi
Enkripsi adalah proses dimana data atau informasi diubah menjadi bentuk yang
hampir tidak dikenali sebagai informasi awalnya dengan menggunakan algoritma
tertentu. Plainteks adalah pesan atau informasi yang akan dikirimkan dalam format
yang mudah dibaca atau dalam bentuk aslinya.Dekripsi adalah proses mengubah
kembali bentuk yang tersamar tersebut menjadi informasi awal.
Banyak algoritma yang digunakan untuk melakukan pengamanan data,
diantaranya: Caesar Chiper, Vigenere Chiper, Hill Chiper, dan Affine Chiper.
Sedangkan algoritma kriptografi yang digunakan dengan mengkombinasikan
algoritma Caesar Chiper dengan Affine Chiper.
2.
LANDASAN TEORI
2.1 Kriptografi
Kriptografi merupakan salah satu ilmu seni dengan filosofinya the art of war.
Dimana pada saat itu digunakan untuk mengirim pesan rahasia pada zaman Romawi
pada era raja Julius Caesar. Kriptografi adalah suatu metode untuk melindungi suatu
data atau informasi dengan menggunakan sandi, dimanasandi tersebut hanya bisa
dimengerti oleh orang yang berhak menerima data atau informasi
tersebut.Sedangkan tujuan kriptografi adalah melindungi data dari ancaman yang
disengaja atau tidak disengaja. Dewasa ini ancaman bertambah karena semakin
meluasnya akses melalui internet atau teknologi bergerak.Aspek-aspek keamanan
data dalam kriptografi adalah sebagai berikut :
a. Confidentiality
Merupakan usaha untuk menjaga kerahasiaan data. Serangan dalam aspek ini
antara lain dilakukan dengan penyadapan, misalnya sniffer atau logger.
b. Integrity
Memastikan bahwa informasi yang dikirim tidak mengalami modifikasi oleh pihak
yang tidak berhak. Serangan dapat berupa pengubahan data oleh orang yang tidak
berhak.
c. Availability
Informasi harus tersedia ketika dibutuhkan. Serangan dapat berupa
menghilangkan atau menghapus data.
d. Authentication
Meyakinkan keaslian data, sumber data, orang yang mengakses data, dan server
yang digunakan.
e. Access Control
Aspek ini berhubungan dengan mekanisme pengaturan akses ke informasi, untuk
mengatur siapa yang boleh melakukan apa.
Dalam kriptografi sering ditemukan istilah-istilah penting untuk diketahui,
diantaranya:
- Pesan (message), adalah data atau informasi yang dapat dibaca atau
dimengerti maknanya.
- Pengirim (sender), adalah entitas yang melakukan pengiriman pesan kepada
entitas lain.
- Kunci (chiper), adalah aturan atau fungsi yang digunakan untuk melakukan
proses enkripsi dan dekripsi pada plainteks dan chiperteks.
- Enkripsiadalah mekanisme yang dilakukan untuk merubah plainteks menjadi
chiperteks.
- Dekripsi adalah mekanisme yang dilakukan untuk merubah chiperteks
menjadi plainteks.
- Penerima (recipient), adalah entitas yang penerima yang berhak menerima
pesan dari pengirim.
Algoritma kriptografi(cipher) adalah suatu fungsi matematis yang digunakan
untuk melakukan enkripsi dan dekripsi [6]. Ada dua macam algoritma kriptografi,
yaitu algoritma simetris (symmetric algorithms) dan algoritma asimetris
(asymmetric algorithms).
Algoritma simetris adalah algoritma kriptografi yang menggunakan kunci
enkripsi yang sama dengan kunci dekripsinya. Algoritma ini mengharuskan
pengirim dan penerima menyetujui suatu kunci tertentu sebelum mereka saling
berkomunikasi. Keamanan algoritma simetris tergantung pada kunci,
membocorkan kunci berarti bahwa orang lain dapat mengenkripsi dan
mendekripsi pesan. Agar komunikasi tetap aman, kunci harus tetap
dirahasiakan.Contoh dari algoritma kriptografi simetris adalah Cipher Permutasi,
Cipher Substitusi, Cipher Hill, OTP, RC6, Twofish, Magenta, FEAL, SAFER, LOKI,
CAST, Rijndael (AES), Blowfish, GOST, A5, Kasumi, DES dan IDEA.
Algoritma asimetris, sering juga disebut dengan algoritma kunci publik,
menggunakan dua jenis kunci, yaitu kunci publik (public key) dan kunci rahasia
(secret key). Kunci publik merupakan kunci yang digunakan untuk mengenkripsi
pesan.
Sedangkan kunci rahasia digunakan untuk mendekripsi pesan. Contoh dari
algoritma asimetris adalah RSA, ElGamal, McEliece, LUC dan DSA (Digital
Signature Algorithm).
2.2 Caesar Chipher
Caesar Cipher merupakan salah satu algoritma cipher tertua dan paling
diketahui dalam perkembangan ilmu kriptografi. Caesar cipher merupakan salah
satu jenis cipher substitusi yang membentuk cipher dengan cara melakukan
penukaran karakter pada plainteks menjadi tepat satu karakter pada chiperteks.
Teknik seperti ini disebut juga sebagai chiper abjad tunggal.
Algoritma kriptografi Caesar Cipher sangat mudah untuk digunakan. Inti dari
algoritma kriptografi ini adalah melakukan pergeseran terhadap semua karakter
pada plainteks dengan nilai pergeseran yang sama. Adapun langkah- langkah
yang dilakukan untuk membentuk chiperteks dengan Caesar Cipher adalah
Menentukan besarnya pergeseran karakter yang digunakan dalam membentuk
cipherteks ke plainteks.
Menukarkan karakter pada plainteks menjadi cipherteks dengan
berdasarkan pada pergeseran yang telah ditentukan sebelumnya.Algoritma dari
Caesar Cipher adalah C = E ( P ) = ( P + K) mod 26 untuk fungsi enkripsi.
Sedangkan untuk fungsi depenelitian adalah P = D ( C) = ( C - 7 ) mod 26 .
2.3 Affine Chiper
Affine cipher adalah perluasan dari metode Caesar cipher yang
menggunakan teknik substitusi yang menggunakan fungsi liniear ap+b untuk
enkripsi teks asli p dan a-1c-b untuk dekripsi teks sandi c pada Z26. Kunci pada
sandi Affine adalah 2 integer yaitu a dan b. Nilai a yang dapat dipakai adalah
anggota elemen pada Z26 yang memiliki invers yaitu yang memenuhi gcd(a,26)
= 1 [4].
Proses Enkripsi Affine Cipher adalah sebagai berikut. Affine cipher
merupakan sandi yang bekerja secara subtitusi. Pada affine cipher terdapat
abjad sejumlah m, yang yaitu rentang m-1, maksudnya adalah awal abjad yaitu
huruf “A” bernilai 0, huruf kedua “B” bernilai 1, dan seterusnya hingga huruf
terakhir dalam abjad yaitu huruf Adapun rumus enkripsi dengan menggunakan
affine cipher pada satu huruf plaintext menjadi satu huruf ciphertext adalah
sebagai berikut:
E(x) = (ax + b) mod m, (4)
Dimana m adalah ukuran abjad, ini berarti modulus m adalah modulus dari
ukuran abjad, sedangkan jumlah abjad dalam rentang affine cipher adalah 25,
maka modulus m adalah modulus 25. Sedangkan a adalah bilangan yang harus
dipilih secara bebas, namun memiliki syarat haruslah coprime dengan nilai m,
artinya harus memiliki nilai faktor yang positif.
Proses Dekripsi Affine Cipher adalah sebagai berikut. Fungsi dekripsi affine
cipher adalah:
D(x) = a-1(x-b) mod m, (5) a-1 adalah invers perkalian a modulus m. Yaitu,
memenuhi persamaan:
1 = aa-1 mod m. (6)
Invers perkalian a hanya ada jika a dan m adalah coprime. Jika tidak maka
proses algoritma [7][8][9][10]. “Z” bernilai 25 [5][6].
2.4 Python
Python merupakan bahasa pemrograman interpreatatif multiguna dengan
filosofi perancangan yang berfokus pada tingkat keterbacaan kode. Bahasa
pemograman Python disebut sebagai bahasa yang kemampuan,
menggabungkan kapabilitas, dan sintaksis kode yang sangat jelas, dan juga
dilengkapi dengan fungsionalitas pustaka standar yang besar serta
komprehensif.
Python adalah sebuah bahasa pemograman scripting tingkat tinggi atau
high-level, interpreted, interactive, dan object-oriented. Python dengan desain
yang sangat mudah di baca dan dipahami, karena sama seperti bahasa
pemograman yang lainnya yaitu dengan menggunakan kata bahasa inggris.
Selain itu juga lebih sedikit dalam penggunaan rumus atau syntac.
- Interpreted : Python diproses pada saat runtime oleh interpreter, artinya Anda
tidak perlu untuk mengkompilasi program Anda sebelum dijalankan. Sama
seperti di bahasa pemograman PHP dan PERL
-
Interactive : Maksudnya Anda dapat secara langsung berinteraksi dan
menafsirkan scripting menggunakan Prompt Python pada saat menulis
program Anda
-
Object-oriented : Python juga mendukung sistem object-oriented atau teknik
pemograman yang merangkum kode dalam objek.
Python dibuat dan dikembangkan lebih lanjut oleh Guido Van Rossum, yaitu
seorang programmer yang berasal dari Negara Belanda. Dibuat dan dikembangkan
di kota Amsterdam, Belanda pada tahun 1990. Pada tahun 1995 Python
dikembangkan lagi agar lebih kompatibel oleh Guido Van Rossum.
Kemudian di awal tahun 2000 versi Python dikembangkan dan diperbaharui
lagi sehingga kini Bahasa Pemrograman Python telah mencapai Versi 3.
Sebenarnya awal mula dari kata ‘ Python ‘ Diambil oleh Guido Van Rossum dari
sebuah acara televisi yang lumayan terkenal yang bernama Mothy Python Flying
Circus, Yaitu sebuah acara sirkus yang disukai oleh Guido Van Rossum. Python
mempunyai beberapa fitur unik di dalam bahasa pemrogramannya diantaranya
sebagai berikut :
-
Bahasa pemrograman python memiliki tata bahasa dan script yang sangat
mudah untuk dipelajari.
-
Bahasa pemrograman python
dan memori yang otomatis.
memiliki
sistem
pengelolaan
data
-
Bahasa pemrograman python mempunyai modul yang baru dan selalu
diperbaharui.
-
Bahasa pemrograman python memiliki banyak fasilitas pendukung dan
memudahkan para penggunannya.
-
Bahasa pemrograman python sangat mudah dipahami seperti bahasa
pemrograman lainnya.
Python mendukung berbagai sistem operasi syntax. Python bisa dijalankan dan
ditulis untuk membangun aplikasi di beragam sistem operasi. Yaitu : Linux/Unix,
Microsoft Windows, Mac OS, Android, Java Virtual Machine, Symbian OS, Amiga,
Palm, OS/2.
2.5 KOMODO IDE
Komodo Edit adalah software editor program multi bahasa gratis yang
dapat membuat penulisan kode program berkualitas menjadi mudah. Pengeditan
program untuk bahasa dinamis termasuk Perl, PHP, Python, Ruby dan Tcl,
ditambah dukungan kode browser sampling termasuk CSS, JavaScript, HTML, dan
XHTML.
Pemeriksaan sintaks latar belakang dan penawaran sintaks untuk menangkap
kesalahan dengan segera, sementara auto komplit dan calltips membimbing Anda
ketika menulis. Tersedia untuk Windows, Linux, dan Max OS X.
3. METODE
3.1 Enkripsi dan Deskripsi Caesar Chiper
Caesar Cipher merupakan salah satu algoritma cipher tertua dan paling
diketahui dalam perkembangan ilmu kriptografi. Caesar cipher merupakan salah
satu jenis cipher substitusi yang membentuk cipher dengan cara melakukan
penukaran karakter pada plainteks menjadi tepat satu karakter pada
chiperteks.Teknik seperti ini disebut juga sebagai chiper abjad tunggal.
Algoritma kriptografi Caesar Cipher sangat mudah untuk digunakan.
Enkripsi Caesar Cipher Cara kerja enkripsi dari algoritma caesar cipher
Proses Enkripsi (E) pada algoritma Caesar Chiper dalam fungsi
E(x) = (Pi + K) mod 26
(1)
Sedangkan proses Dekripsi (D) pada algoritma Caesar Chiper dalam fungsi
D(x) = (Ci - K) mod 26
(2)
Dimana Pi = plainteks ke-i, K = kunci, Ci = chiperteks ke-i
Sebagai contoh diberikan plainteks “KUCING”, dengan kunci = 21, maka diperoleh
chiperteks “FPXDIB”. Dimana proses enkripsi dengan menggunakan persamaan 1.
Plainteks :
KUCING Kunci
21
K= (10 + 21) mod 26
=5 F
= (20 + 21) mod 26
= 15 P
C = (2 + 21) mod 26
= 23 X
I
= (8 + 21) mod 26
=3 D
N = (13 + 21) mod 26
=8 I
G = (6 + 21) mod 26
=1 B
Sedangkan proses dekripsi dengan menggunakan persamaan 2
Chiperteks : FPXDIB
Kunci
21
F = (5 - 21) mod 26
=5 K
P = (15 - 21) mod 26
= 20 U
X = (23 - 21) mod 26
=2 C
D = (3 - 21) mod 26
=8 I
I
= (8 - 21) mod 26
= 13 N
B = (1 - 21) mod 26
=6 G
U
3.2 Enkripsi dan Deskripsi Affine Chiper
cara tarik Metode Affine cipher merupakan kriptografi dengan kunci
simetris, yaitu jika kunci yang digunakan untuk enkripsi sama dengan kunci untuk
dekripsi. Plainteks dikonversikan dengan tabel konversi, kemudian untuk
memperoleh cipherteks, plainteks dienkripsi menggunakan persamaan :
Misalkan plainteks SEMANGAT ‘45 akan dienkripsi dan didekripsi dengan
menggunakan modifikasiAffine cipher yang diperkuat dengan Vigenere cipher,
dengan kunci pertama , kunci kedua , dan kunci ketiga ( 121088). Plainteks
dikonversikan kedalam Tabel 2, sehinggaSEMANGAT_‘45 menjadi 18 4 12 0 13 6
0 19 36 39 30 31, lalu dengan substitusikanhasil konversi ke Persamaan (1),
Sehingga diperoleh masing-masing cipherteksdari Affine cipher(Tabel 3),
Tabel 1. Aturan konversi pada modifikasi Affine cipher
T
a
b AB
e
l 01
C ...
2 ...
Z
0
1
25 26
2
7
2
3 4
5
6 7
8
28 29 3
0
3
1
32 3
3
3
4
9
_
.
35 36 3
7
,
‘
38
3
9
Tabel 2. Enkripsi pada Affine cipher
Plainteks
Cipherteks sementara
S
E
M
A
N
G
A
T
_
‘
18
4
12
0
13
6
0
36
61 19
43
7
46
2
5
7
1
9
6
4
21 19
3
7
6
7
35
D
H
G
2
5
Z
3
9
1
2
4
4
9
E
V
T
115
2
4
Y
H
4
5
30
31
97
100
17
20
R
U
Cipherteks dari Affine cipher adalah VTDHGZHY9ERU, cipherteks dari Affine cipher
dienkripsi dengan menggunakan Persamaa, diperoleh
Cipherteks sementara
: V
T
D
H G
Z
H Y
9 E
R
U
Kunci ketiga
: 1
2
1
0 8
8
1 2
1 0
8
8
: 8
7 30 33
0 19
3 12 22 30 11
14
4
Cipherteks
: I
H
4
7 A
T
8 M W 4
L
O
Cipherteksdari Vigenere ciphermerupakan cipherteks yang akan dikirim, yaitu
IH47AT8MW4LO bearti pengerjaan selesai. Perangkat yang dikirim : IH47AT8MW4LO, 3, =
7, = 121088, dan aturan konversi (Tabel 2).
Dekripsi pada modifikasi Affine cipher yang diperkuat dengan Vigenere cipher dilakukan
dengan cara, cipherteks didekripsi menggunakan Persamaan, diperoleh
Cipherteks
: I
H
4
7 A
T
8 M
W
4 L
O
Kunci ketiga
: 1
2
1
0 8
8
1 2
1
0 8
8
: 21 19
3
7 6 25
7 24 35
4 17
20
Plainteks sementara
: V
T
D H G
Z
H Y
9
E R
U
sehingga cipherteks IH47AT8MW4LO menjadi plainteks sementara yaitu VTDHGZHY9ERU.
Plainteks sementara dikonversikan kedalam Tabel 2, sehingga plainteks sementara menjadi
21 19 3 7 6 25 7 24 35 4 17 20 dan didekripsi dengan Persamaan ,
Plainteks sementara
V
T
D
H
G
Z
H
Y
9
E
R
U
21
19
3
7
6
25
7
24
4
17
20
0 459
3
5
7
5
6
3
6
_
–
378 324 -108
0
-27
486
–
18
4
12
0
13
6
0
19
Plainteks
S
E
M
A
N
G
A
T
- 270 351
8
1
3 30 31
9
‘
4
5
Tabel 3. Dekripsi pada Affine cipher
Sehingga diperoleh plainteksdari modifikasi Affine cipher yang diperkuat dengan Vigenere
cipher, yaitu SEMANGAT_’45.
Tabel 4. Algoritma Modifikasi Affine cipheryang diperkuat dengan
Vigenerecipher
kamus :
i, j, h, sebagai bilangan Real
c, d, m, n, o, p, q sebagai bilangan
Bulat plaintext sebagai bilangan
Bulat chipertext1 sebagai bilangan
Bulat chipertext2 sebagai bilangan
Bulat vigenerekey sebagai bilangan
Bulat
s sebagai huruf/teks
Input plainteks
Untuk i = 1 sampai panjang karakter
pada text c = kode ascii dari karakter
ke-i pada Text Jika 65 ≤ c ≤ 90 Maka
plaintext = c – 65
Jika 97 ≤ c ≤ 122 Maka plaintext = c
– 97 Jika 48 ≤ c ≤ 57 Maka plaintext
= c – 22 Jika c = 32 Maka plaintext =
36
Jika c = 46 Maka plaintext
= 37 Jika c = 44 Maka
plaintext = 38 Jika c = 39
Maka plaintext = 39
Input kunci1
“Mencari relatif prima” dengan n=nilai kunci1,
m=40 dan n berisi bilangan tak nol,
lakukan perulangan sampai p=0
dan q=1 q=n, p= m mod n, m=n,
n=p,
Input kunci2 dipilih bebas dari 1 sampai dengan
39
Enkripsi plainteks:
chipertext1=(kunci1* plaintext+kunci2) mod 40
Input kunci3/vigenerekey:
j = panjangnya karakter pada kunci3
Untuk i = 1 sampai panjang karakter pada
text “mencari pasangan kunci3 dengan
plainteks”
Jika i mod j = 0 maka h = j dan selain itu h = i
mod j d = kode ascii dari karakter ke-h pada
kunci3
Jika 65 ≤ d ≤ 90 Maka vigenerekey = d
– 65 Jika 97 ≤ d ≤ 122 Maka
vigenerekey = d – 97 Jika 48 ≤ d ≤57
Maka vigenerekey = d – 22 Jika d = 32
Maka vigenerekey = 36
Jika d = 46 Maka vigenerekey = 37
Jika d = 44 Maka vigenerekey
= 38 Jika d = 39 Maka
vigenerekey = 39
Enkripsi plainteks:
chipertext2 = (chipertext1 + vigenerekey)mod
40
kamus :
i, j, h, sebagai bilangan Real
c, d, m, n, o, p, q, r, z sebagai bilangan
Bulat plaintext sebagai bilangan Bulat
chipertext1 sebagai bilangan
Bulat chipertext2 sebagai
bilangan Bulat vigenerekey
sebagai bilangan Bulat s
sebagai huruf/teks
Input cipherteks
Untuk i = 1 sampai panjang karakter
pada text c = kode ascii dari karakter
ke-i pada Text Jika 65 ≤ c ≤ 90 maka
ciphervigenere = c – 65 Jika 97 ≤ c ≤
122 maka ciphervigenere =c-97 Jika 48
≤ c ≤ 57 maka ciphervigenere = c – 22
Jika c = 32 maka ciphervigenere = 36
Jika c = 46 maka ciphervigenere
= 37 Jika c = 44 maka
ciphervigenere = 38 Jika c = 39
maka ciphervigenere = 39
Input kunci3/vigenerekey:
j = panjangnya karakter pada kunci3
Untuk i = 1 sampai panjang karakter pada text
“mencari pasangan kunci3 dengan plainteks”
Jika i mod j = 0 maka h = j dan selain itu h = i
mod j d = kode ascii dari karakter ke-h pada
kunci3
Jika 65 ≤ d ≤ 90 Maka vigenerekey = d
– 65 Jika 97 ≤ d ≤ 122 Maka
vigenerekey = d – 97 Jika 48 ≤ d ≤57
Maka vigenerekey = d – 22 Jika d = 32
Maka vigenerekey = 36
Jika d = 46 Maka vigenerekey = 37
Jika d = 44 Maka vigenerekey
= 38 Jika d = 39 Maka
vigenerekey = 39
Dekripsi cipherteks:
r = 39 dan q= 40
Lakukan sampai q =
ciphervigenere : q = (r +
vigenerekey) mod 40
cipheraffine = r, r = r -1
Input kunci1: “Mencari relatif prima” dengan
n=nilai
kunci1, m=40 dan n berisi bilangan tak nol,
lakukan perulangan sampai p=0
dan q=1 q=n, p= m mod n, m=n,
n=p,
Input kunci2 dipilih bebas dari 1 sampai
dengan 39
Output: diketahui s = “ “
Jika cipherteks2 ≤ 25 Maka c = cipherteks2 +
65 Jika 26 ≤ cipherteks2≤ 35 Maka c=
cipherteks2+22 Jika cipherteks2 = 36 Maka
c = 32
Jika cipherteks2 = 37 Maka c
= 46 Jika cipherteks2 = 38
Maka c = 44 Jika cipherteks2
= 39 Maka c = 39 s = s +
karakter huruf dari c
Text = s
Dekripsi cipherteks:
z = 39 dan r= 40
Lakukan sampai r = cipheraffine
r = ((kunci1 * z) + kunci2)
mod 40 plaintext = z, z = z – 1
Output: diketahui s = “ “
Jika plaintext ≤ 25 Maka c = plaintext +
65 Jika 26 ≤ plaintext ≤ 35 Maka c=
plaintext +22 Jika plaintext = 36 Maka c
= 32
Jika plaintext = 37 Maka c =
46 Jika plaintext = 38 Maka
c = 44 Jika plaintext = 39
Maka c = 39 s = s +
karakter huruf dari c Text
=s
4.HASIL DAN PEMBAHASAN
4.1 SubCode Caesar Chiper
print(" Program Enkripsi Caesar Restoran")
abjad = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
def enkripsi(abjad):
str = input("String : ")
key = int(input("Key : "))
str = str.lower()
result = ''
for char in str:
if char in abjad:
n = abjad.index(char)
encrypt = (n - key) % 26
convert = abjad[encrypt]
result = result + convert
else:
result = result + ' '
print(f"Result : {result}")
def dekripsi(abjad):
str = input("String Enkripsi : ")
key = int(input("Key : "))
str = str.lower()
result = ''
for char in str:
if char in abjad:
n = abjad.index(char)
encrypt = (n + key) % 26
convert = abjad[encrypt]
result = result + convert
else:
result = result + ' '
print(f"Result : {result}")
# pembuatan menu
pilihan = 'y'
while (pilihan == 'y'):
print("Menu yang tersedia : ")
print("01. Enkripsi Data")
print("02. Dekripsi Data")
print("03. Keluar")
menu = input("Menu yang dipilih : ")
print("-------------------------------------")
if menu == '1':
print("Menu Enkripsi Data")
enkripsi(abjad)
elif menu == '2':
print("Menu Dekripsi Data")
dekripsi(abjad)
elif menu == '3':
print("Program Selesai, terima kasih.")
break
else:
print("Menu tidak ditemukan")
print("------------------------------------")
pilihan = input("Apakah ingin melanjutkan ? (Y/n) : ")
print("------------------------------------")
Tabel 5. Subcode Caesar Chiper
import string
def caesar_encrypt(data,key):
res = ""
for x in range(len(data)):
if data[x].isupper():
pos = string.ascii_uppercase.index(data[x]) + key
pos = pos % 26
res += string.ascii_uppercase[pos]
elif data[x].islower():
pos = string.ascii_lowercase.index(data[x]) + key
pos = pos % 26
res += string.ascii_lowercase[pos]
else:
res += data[x]
return res
def caesar_decrypt(data,key):
res = ""
for x in range(len(data)):
if data[x].isupper():
pos = string.ascii_uppercase.index(data[x]) - key
pos = pos % 26
res += string.ascii_uppercase[pos]
elif data[x].islower():
pos = string.ascii_lowercase.index(data[x]) - key
pos = pos % 26
res += string.ascii_lowercase[pos]
else:
res += data[x]
return res
def main():
enc = caesar_encrypt("Pengamanan Data Aplikasi Restoran",17)
print(enc)
dec = caesar_decrypt(enc,17)
print(dec)
if __name__ == "__main__":
main()
Tabel 6. Subcode program Caesar Chiper
4.2 SubCode Affine Chiper
import sys, pyperclip, kriptomath, random
SYMBOLS = """ !"#$%&'()*+,./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy
z{|}~"""
def main():
pesanSaya = """"Implementasi Alagoritma Kriptografi chesar chiper dan Permutasi chiper
sebagai pengamanan data Aplikasi Restoran"""
kunciSaya = 2022
modeSaya = 'enkripsi'
if modeSaya == 'enkripsi':
ubah = enkripsiPesan(kunciSaya, pesanSaya)
elif modeSaya == 'dekripsi':
ubah = dekripsiPesan(kunciSaya, pesanSaya)
print('Kunci: %s' % (kunciSaya))
print('%si :' % (modeSaya.title()))
print(ubah)
pyperclip.copy(ubah)
print('Seluruh %s teks telah disalin.' % (modeSaya))
def cariBagianKunci(kunci):
kunciA = kunci // len(SYMBOLS)
kunciB = kunci % len(SYMBOLS)
return (kunciA, kunciB)
def cekKunci(kunciA, kunciB, mode):
if kunciA == 1 and mode == 'enkripsi':
sys.exit('Sandi Affine akan menjadi lebih lemah ketika A di tentukan menjadi 1. Silahkan
pilih kunci yang berbeda.')
if kunciB == 0 and mode == 'enkripsi':
sys.exit('Sandi Affine akan menjadi lebih lemah ketika B di tentukan menjadi 0. Silahkan
pilih kunci yang berbeda.')
if kunciA < 0 or kunciB < 0 or kunciB > len(SYMBOLS) - 1:
sys.exit('Kunci A harus lebih besar daripada 0 dan kunci B harus ada diantara 0 dan %s.'
% (len(SYMBOLS) - 1))
if kriptomath.gcd(kunciA, len(SYMBOLS)) != 1:
sys.exit('Kunci A (%s) dan simbol ukuran yang ditentukan (%s) secara realtif bukanlah
yang paling utama. Silahkan pilih kunci yang berbeda.' % (kunciA, len(SYMBOLS)))
def enkripsiPesan(kunci, pesan):
kunciA, kunciB = cariBagianKunci(kunci)
cekKunci(kunciA, kunciB, 'enkripsi')
sanditeks = ''
for symbol in pesan:
if symbol in SYMBOLS:
symIndex = SYMBOLS.find(symbol)
sanditeks += SYMBOLS[(symIndex * kunciA + kunciB) % len(SYMBOLS)]
else:
sanditeks += symbol
return sanditeks
def dekripsiPesan(kunci, pesan):
kunciA, kunciB = cariBagianKunci(kunci)
cekKunci(kunciA, kunciB, 'dekripsi')
teksawal = ''
kunciUntukMembalikkanA = kriptomath.cariModMembalikkan(kunciA, len(SYMBOLS))
for symbol in pesan:
if symbol in SYMBOLS:
symIndex = SYMBOLS.find(symbol)
teksawal += SYMBOLS[(symIndex - kunciB) * kunciUntukMembalikkanA %
len(SYMBOLS)]
else:
teksawal += symbol
return teksawal
def menentukanKunciAcak():
while True:
kunciA = random.randint(2, len(SYMBOLS))
kunciB = random.randint(2, len(SYMBOLS))
if kriptomath.gcd(kunciA, len(SYMBOLS)) == 1:
return kunciA * len(SYMBOLS) + kunciB
if __name__ == '__main__':
main()
Tabel 7. Subcode Affine Chiper
import sys, pyperclip, kriptomath, random
SYMBOLS = """ !"#$%&'()*+,./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy
z{|}~"""
def main():
pesanSaya = """"Implementasi Alagoritma Kriptografi chesar chiper dan Permutasi chiper
sebagai pengamanan data Aplikasi Restoran"""
kunciSaya = 2022
modeSaya = 'enkripsi'
if modeSaya == 'enkripsi':
ubah = enkripsiPesan(kunciSaya, pesanSaya)
elif modeSaya == 'dekripsi':
ubah = dekripsiPesan(kunciSaya, pesanSaya)
print('Kunci: %s' % (kunciSaya))
print('%si :' % (modeSaya.title()))
print(ubah)
pyperclip.copy(ubah)
print('Seluruh %s teks telah disalin.' % (modeSaya))
def cariBagianKunci(kunci):
kunciA = kunci // len(SYMBOLS)
kunciB = kunci % len(SYMBOLS)
return (kunciA, kunciB)
def cekKunci(kunciA, kunciB, mode):
if kunciA == 1 and mode == 'enkripsi':
sys.exit('Sandi Affine akan menjadi lebih lemah ketika A di tentukan menjadi 1. Silahkan
pilih kunci yang berbeda.')
if kunciB == 0 and mode == 'enkripsi':
sys.exit('Sandi Affine akan menjadi lebih lemah ketika B di tentukan menjadi 0. Silahkan
pilih kunci yang berbeda.')
if kunciA < 0 or kunciB < 0 or kunciB > len(SYMBOLS) - 1:
sys.exit('Kunci A harus lebih besar daripada 0 dan kunci B harus ada diantara 0 dan %s.'
% (len(SYMBOLS) - 1))
if kriptomath.gcd(kunciA, len(SYMBOLS)) != 1:
sys.exit('Kunci A (%s) dan simbol ukuran yang ditentukan (%s) secara realtif bukanlah
yang paling utama. Silahkan pilih kunci yang berbeda.' % (kunciA, len(SYMBOLS)))
def enkripsiPesan(kunci, pesan):
kunciA, kunciB = cariBagianKunci(kunci)
cekKunci(kunciA, kunciB, 'enkripsi')
sanditeks = ''
for symbol in pesan:
if symbol in SYMBOLS:
symIndex = SYMBOLS.find(symbol)
sanditeks += SYMBOLS[(symIndex * kunciA + kunciB) % len(SYMBOLS)]
else:
sanditeks += symbol
return sanditeks
def dekripsiPesan(kunci, pesan):
kunciA, kunciB = cariBagianKunci(kunci)
cekKunci(kunciA, kunciB, 'dekripsi')
teksawal = ''
kunciUntukMembalikkanA = kriptomath.cariModMembalikkan(kunciA, len(SYMBOLS))
for symbol in pesan:
if symbol in SYMBOLS:
symIndex = SYMBOLS.find(symbol)
teksawal += SYMBOLS[(symIndex - kunciB) * kunciUntukMembalikkanA %
len(SYMBOLS)]
else:
teksawal += symbol
return teksawal
def menentukanKunciAcak():
while True:
kunciA = random.randint(2, len(SYMBOLS))
kunciB = random.randint(2, len(SYMBOLS))
if kriptomath.gcd(kunciA, len(SYMBOLS)) == 1:
return kunciA * len(SYMBOLS) + kunciB
if __name__ == '__main__':
main()
Tabel 6. Subcode program Affine Chiper
4.3 Tampilan Hasil Program pada Python
Gambar 2. Tampilan program pada Python
Gambar 3. Tampilan hasil program pemesanan makanan
Gambar 4. Tampilan hasil program menggunakan code
Gambar 5. Tampilan melalui kunci/sandi
5.KESIMPULAN DAN SARAN
5.1 KESIMPULAN
Berdasarkan hasil penelitian dapat disimpulkan bahwa:
1. Kombinasi algoritma kriptografi Caesar Chiper dan Vigenere Chiper dapat digunakan
untuk mengirim pesan rahasia.
2. Algoritma yang dikembangkan dapat mengamankan proses pengiriman pesan dari
server ke klien ataupun sebaliknya.
3. Aplikasi chatting sederhana mampu mengimplementasikan algoritma kriptografi
yang dikembangkan dalam penelitian ini.
5.2 SARAN
1. Penelitian selanjutnya diharpkan mampu menambah keamanan dari algoritma
yang
sudah dikembangkan di dalam penelitian ini.
2. Penelitian penyederhanaan hasil keluaran dari proses enkripsi dapat dilakukan
3. Penelitian tentang kriptanalisis dapat dilakukan untuk mencoba kekuatan dari
algoritma yang sudah dikembangkan.
DAFTAR PUSTAKA
[1] Kurniawan, Y. (2004). Kriptografi Keamanan Internet dan Jaringan Komunikasi.
Bandung: Informatika.
[2] Novi Dian Nathasia, Anang Eko Wicaksono. 2011 .Penerapan Teknik Kriptografi
[3] Stream Chiper Untuk Pengamanan Basis Data. Jurnal Basis Data, ICT Research Center
UNAS.
[4] Munawar. 2012. Perancangan Algorithma Sistem Keamanan Data Menggunakan
Metoda Kriptografi Asimetris. Jurnal Komputer dan Informatika.
[5] Seftyanto, Donny. 2012. Peran Algoritma Caesar Cipher Dalam Membangun
Karakter Akan Kesadaran Keamanan Informasi. Seminar Nasional Matematikan
dan Pendidikan Matematikan FMIPA UNY.
November 2012 : MP 883-890
[6] Rahima.
2014.
Implementasi Penyembunyian dan Penyandian Pesan
Pada Citra Menggunakan Algoritma Affine Cipher dan Metode Least Significant
Bit. Pelita.
[7] Sadikin, R., 2012, Kriptografi Untuk Keamanan Jaringan, Andi, Yogyakarta
[8] Sasongko, J., 2005, Pengamanan Data Informasi Menggunakan Kriptografi Klasik,
Jurnal Teknologi Informasi DINAMIK Vol X No. 3 ISSN 0854-9524 pp 160-167.
[9] Fitriasih, I., Prayitno, TB., Sidopekso, S., 2012, Studi Model Kriptografi Klasik
(Review), Jurnal Fisika dan Aplikasinya Vo. 13 Edisi 1 pp 6-11.
[10] Doni, dan Walad, A., 2012, Caesar Chiper VS Vigenere Chiper, Jurnal LPKIA Vol 1
No 3 pp 12-16.
Download