Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1

12

Click here to load reader

Transcript of Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1

Page 1: 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

Page 2: Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1

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

Page 3: Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1

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

Page 4: Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1

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

Page 5: Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1

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

Page 6: Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1

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;

Page 7: Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1

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

Page 8: Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1

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---------------------------}

Page 9: Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1

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

Page 10: Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1

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

Page 11: Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1

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

Page 12: Laporan Tugas Program Enkripsi Sistem Kripto Cipher Hill1

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.