Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1
Click here to load reader
Transcript of Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1
Hedri Wahyudi - Tugas Kriptografi halaman 0 dari 11
TUGAS MATAKULIAH KRIPTOGRAFI
PROGRAM ENKRIPSI PADA SISTEM KRIPTO CIPHER HILL
DOSEN:Dra. Diah Junia Eksi Palupi, M.S
DISUSUN OLEH :Hedri Wahyudi
(07/259575/PPA/2248)
PROGRAM S2 MAGISTER ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS GADJAH MADAYOGYAKARTA
2008
Hedri Wahyudi - Tugas Kriptografi halaman 1 dari 11
TUGAS KRIPTOGRAFI
PROGRAM ENKRIPSI PADA SISTEM KRIPTO CIPHER HILL
A. Permasalahan
Pada Sistem Kripto Cipher Hill, plainteks dienkripsi menggunakan kunci
matriks bujur sangkar. Matriks bujur sangkar yang bisa dijadikan kunci adalah matriks
invertibel, yaitu matriks yang memiliki invers. Buatlah program untuk mengenkripsi
suatu plainteks dengan suatu kunci matrisk berordo 2 x 2. . Program meminta masukan
(input) berupa : plainteks dan kunci berupa elemen-elemen matriks ordo 2 x 2. Hasil
(output) program adalah hasil enkripsi menggunakan Sistem Kripto Cipher Hill berupa
cipherteks.
B. Analisis
Berdasarkan permasalahan yang dikemukakan tersebut diatas, dilakukan analisis
permasalahan. Hasil analisis tersebut adalah sebagai berikut :
1. Program menggunakan bahasa pascal.
2. Plainteks berupa kalimat yang hanya mengandung abjad.
3. Matriks yang digunakan adalah matriks ordo 2 x 2.
4. Data yang dimasukkan (input) adalah plainteks dan elemen-elemen kunci matriks.
Data plainteks berupa huruf -huruf abjad, elemen-elemen kunci matriks berupa
bilangan bulat.
5. Jika determinan matriks (dalam bilangan modulo 26) relatif prima dengan 26 , maka
matriks tersebut memiliki invers. Sebaliknya jika determinan matriks t idak relatif
prima dengan 26 maka matriks tersebut tidak memiliki invers.
6. Untuk menguji kerelatifprimaan determinan matriks dan 26 , dilakukan dengan
mencari nilai pembagi bersama terbesar kedua bilangan tersebut menggunakan
Algoritma Euclid. Jika pembagi bersama terbesar kedua bilangan adalah 1 maka
kedua bilangan tersebut relatif prima. Jika pembagi bersama terbesar dari kedua
bilangan tidak sama dengan 1 maka kedua bilangan tidak relatif prima.
7. Jika matriks tersebut invertibel (memiliki invers) maka matri ks tersebut bisa
dijadikan kunci pada sistem kripto cipher hill . Sebaliknya jika matriks tersebut tidak
Hedri Wahyudi - Tugas Kriptografi halaman 2 dari 11
invertibel maka matriks tersebut tidak bisa dijadikan kunci pada sistem kripto cipher
hill.
8. Huruf-huruf plainteks yang dimasukkan masing -masing dikonversikan kedalam
bilangan modulo 26, a menjadi 0, b menjadi 1, dan seterusnya hingga z menjadi 25.
9. Bilangan-bilangan modulo 26 hasil konversi huruf -huruf pada plainteks tersebut
selanjutnya dikalikan dengan Matriks yang bisa dijadikan kunci (matriks yang
invertibel).
C. Desain Program
C. 1. Struktur Program
Pada program yang dibuat terdapat beberapa modul. Pada Tabel Modul Program
dibawah diterangkan nama modul, fungsi dan bentuk implementasinya :
Tabel Modul Program
No Nama Modul Fungsi BentukImplementasi
1 Judul Menuliskan judul program Prosedur2 Tulis Tengah Menuliskan sebuah string pada posisi
tengah secara horisontalProsedur
3 MasukanPlainteks
Memasukkan plainteks Prosedur
4 MasukanElemen Matriks
Memasukkan elemen matriks ordo2 x 2
Prosedur
5 PBT Euclid Mencari nilai pembagi bersamaterbesar
Fungsi
6 Validasi MatriksKunci
Memvalidasi elemen-elemen MatriksKunci
Fungsi
7 Modulo Mencari nilai bilangan modulo 26 Fungsi
Hedri Wahyudi - Tugas Kriptografi halaman 3 dari 11
Tidak
Ya
MatriksValid ?
Judul
Struktur program dapat digambarkan sebagai berikut:
Gambar 1 Struktur Modul
C. 2. Algoritma
Program Utama
Judul
Tulis Tengah
MasukanElemen Matriks
PBT Euclid
MasukanPlainteks
ModuloValidasi KunciMatriks
MULAI
Masukan Elemen Matriks E11, E12, E21, E22,
P(i) = karakter plainteks ke-i
Masukan Plainteks
Fungsi Validasi Kunci Matriks
Matriks Tidak Bisadijadikan KunciFor i = 1 To Panjang Plainteks
Hedri Wahyudi - Tugas Kriptografi halaman 4 dari 11
i mod 2 = 0?
Ya
Tidak
Gambar 1. Algoritma Program
SELESAI
C(i) = P(i-1) x E12 + P(i) x E22
Fungsi Modulo
Cipherteks
P(i) =Hasil Konversi karakterplainteks ke-i kedalam
bilangan Modulo 26
Next i
i = 1
Repeat
C(i) = P(i) x E11 + P(i+1) x E21
Karakter cipherteks ke-i =hasil konversi C(i) ke dalam
huruf abjad
i = i + 1
Until i = Panjang plainteks
Hedri Wahyudi - Tugas Kriptografi halaman 5 dari 11
D. Kode Program
12345679
1011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
{Nama Program : PROGRAM ENKRIPSI PLAINTEKS SISTEM KRIPTO CIPHER HILLNama File : enkrphil.pasTanggal Dibuat : 29 April 2008Pembuat : Hedri WahyudiDeskripsi : Program ini meminta masukan (input) berupa plainteks dan
elemen-elemen matriks kunci. Selanjutnya Program akanmemberikan output berupa Cipherteks atau pernyataan bahwaelemen matriks tidak bisa dijadikan kunci dalam sistemkripto cipher Hill
}
Program SistemKriptoCipherHill;uses wincrt;var plainteks, cipherteks : string; i : byte;
lagi : char; a, b, c, d : longint;
{PROSEDUR UNTUK MENULIS STRING DI TENGAH WINDOW}Procedure Tulistengah(x,y:byte;kata:string);begin x := (80-length(kata)) div 2;
gotoxy(x,y); write(kata);end;
{PROSEDUR MENULIS JUDUL}Procedure Judul;begin tulistengah(0, 2,'+=================== ============================+'); tulistengah(0, 3,'| |');
tulistengah(0, 4,'| |'); tulistengah(0, 5,'| |'); tulistengah(0, 6,'|----------------------------------------------- |'); tulistengah(0, 7,'| |'); tulistengah(0, 8,'| |'); tulistengah(0, 9,'| |'); tulistengah(0,10,'| |'); tulistengah(0,11,'| |'); tulistengah(0,12,'| |'); tulistengah(0,13,'| |'); tulistengah(0,14,'+===============================================+'); tulistengah(0, 4,'PROGRAM ENKRIPSI PLAINTEKS'); tulistengah(0,5,'SISTEM KRIPTO CIPHER HILL'); tulistengah(0, 8,'TUGAS MATA KULIAH KRIPTOGRAFI'); tulistengah(0,10,'DISUSUN OLEH'); tulistengah(0,10,'HEDRI WAHYUDI'); tulistengah(0,12,'(07/259575/PPA/2248)'); tulistengah(0,16,'<< Tekan Enter >>');
readln; clrscr;end;
Hedri Wahyudi - Tugas Kriptografi halaman 6 dari 11
63646566676869707172737475767778798081828384858687888990919293949596979899
100101102103104105106107108109110111112113114115116117118119120121122123124125126127
{PROSEDUR UNTUK MEMASUKKAN PLAINTEKS}Procedure MasukanPlainteks(var p:string);begin clrscr; tulistengah (0,5,'------------------------------------------------ '); tulistengah (0,6,'Masukkan Plainteks'); tulistengah (0,7,'------------------------------------------------ '); gotoxy (40,11);readln (p);end;
{PROSEDUR UNTUK MEMASUKKAN ELEMEN MATRIKS}Procedure MasukanElemenMatriks(var a, b, c, d:longint);begin clrscr; tulistengah (0,5,'------------------------------------------------ ');
tulistengah (0,6,'Masukkan Elemen Matriks Kunci');tulistengah (0,7,'------------------------------------------------ ');
gotoxy (10,9);write ('Elemen Matriks E[1,1] :'); readln (a); gotoxy (46,9);write ('Elemen Matriks E[1,2] :'); readln (b); gotoxy (10,16);write ('Elemen Matriks E[2,1] :'); readln (c); gotoxy (46,16);write ('Elemen Matriks E[2,2] :'); readln (d); clrscr;end;
{FUNGSI UNTUK MENCARI NILAI PEMBAGI BERSAMA TERBES AR MENGGUNAKAN ALGORITMAEUCLID}Function PBTEuclid (a,b : longint):longint;var R, Q : array [0..10] of integer; m : integer;begin R[0]:=a; R[1]:=b; m:=1; while R[m]<>0 do begin Q[m]:=R[m-1] div R[m]; R[m+1]:=R[m-1] - Q[m] * R[m]; m:= m + 1; end; m:= m - 1; PBTEuclid:=R[m];end;
{FUNGSI UNTUK MEMVALIDASI MATRIKS KUNCI}Function ValidasiKunci(a,b,c,d : longint):Boolean;var e,f, det : longint;begin det:= a * d - b * c;
if det>26 then det:=det mod 26else
if det<0 then begin e:=abs(det) div 26;
e:=e+1; f:=26 * e; det:= f - abs(det);
end; if PBTEuclid(det, 26)=1 then
beginValidasiKunci:=true;
end
Hedri Wahyudi - Tugas Kriptografi halaman 7 dari 11
128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
else ValidasiKunci:=false;
end;
{FUNGSI UNTUK MENCARI NILAI BILANGAN MODULO 26}Function Modulo(a:longint):longint;var b, c, d : integer;
begin if a < 0 then begin a:=abs(a); c:=a div 26; c:=c+1; d:=c*26; b:= d - abs(a); end else b:= a mod 26; Modulo:=b;end;
{-----------------------------PROGRAM UTAMA---------------------------------}begin judul; lagi:='Y'; repeat MasukanPlainteks(plainteks); MasukanElemenMatriks(a,b,c,d); If ValidasiKunci(a,b,c,d)= True then begin for i:=1 to length(plainteks) do
plainteks[i]:=upcase(plainteks[i]); i:=1; repeat if i mod 2 = 0 then
cipherteks[i]:= char(Modulo((ord(plainteks[i -1])-65) * b +(ord(plainteks[i])-65) * d)+65)
else cipherteks[i]:= char(Modulo ((ord(plainteks[i]) -65) * a +
(ord(plainteks[i+1])-65) * c)+65); i:=i+1;
until i=length(plainteks)+1; gotoxy (28,5);write ('Chiperteksnya adalah : '); for i:=1 to length(plainteks) do begin gotoxy (((75-length(plainteks))div 2)+i,8);
write (cipherteks[i]); end; end else begin gotoxy (19,10);
writeln ('Matriks tidak bisa dijadikan sebagai kunci');end;
gotoxy (31,15);write ('Coba Lagi [Y/T] ?'); readln (lagi); lagi:=upcase(lagi); until lagi='T'; clrscr;end.
{-----------------------------AKHIR PROGRAM UTAMA---------------------------}
Hedri Wahyudi - Tugas Kriptografi halaman 8 dari 11
E. Hasil Program
Contoh output program :
1. Setelah program mulai dijalankan akan muncul tampilan awal program seperti
gambar 2.
Gambar 2. Tampilan Awal Program
2. Setelah menekan tombol keyboard akan muncul tampilan seperti gambar 3. Pada
menu ini kita masukkan plainteks yang ingin kit a enkripsikan. Misalnya kita
ingin mengenkripsikan plainteks ’kuliahkriptologi’. Ketikkan tombol -tombol
keyboard yang berseusaian dengan huruf -huruf pada plainteks, lalu tekan tombol
enter. Akan muncul tampilan menu program seperti gambar 4.
Gambar 3. Menu Input Plainteks
Hedri Wahyudi - Tugas Kriptografi halaman 9 dari 11
Gambar 4. Menu Input Elemen Matriks Kunci
3. Misalkan kita akan menggunakan matriks
118
73sebagai kunci. Masukkan
elemen-elemen matriks sesuai perintah program. Setelah seluruh elemen matriks
dimasukkan (perhatikan gambar 5), lalu tekan enter. Selanjutnya akan muncul
hasil program seperti gambar 6.
Gambar 5. Menu Input Elemen-elemen Matriks
Hedri Wahyudi - Tugas Kriptografi halaman 10 dari 11
Gambar 6. Tampilan hasil program
4. Jika kita ingin menguji matriks lainnya, saat program tampil seperti pada
gambar 6, tekan tombol huruf ‘Y’ atau ’y’ pada keyboard, lalu tekan tombol
enter. Misalkan kita ingin mengenkripsi plainteks yang sama (kuliahkriptologi)
dengan matriks
711
84 sebagai kunci. Lakukan kembali langkah 2 dan langkah
3. Karena matriks tersebut tidak invertibel, maka program akan menampilkan
hasil seperti gambar 7.
Gambar 7. Tampilan hasil program
Hedri Wahyudi - Tugas Kriptografi halaman 11 dari 11
5. Jika anda ingin mengakhiri program, pada saat program tampil seperti pada
gambar 5 atau gambar 6, tekan tombol huruf ‘T’ atau ‘t’ pada keyboard.