Laporan Kriptografi Playfair

17
1 | Kriptografi | Playfair KRIPTOGRAFI Plalyfair Disusun oleh: Sandhi Yani Zulqifli 24010310141038 PROGRAM STUDI TEKNIK INFORMATIKA – R2 JURUSAN MATEMATIKA FAKULTAS MATEMATIKA ILMU PENGETAHUAN ALAM UNIVERSITAS DIPONEGORO SEMARANG 2012

description

Laporan Kriptografi Playfair

Transcript of Laporan Kriptografi Playfair

1 | K r i p t o g r a f i | P l a y f a i r

KRIPTOGRAFI

Plalyfair

Disusun oleh:

Sandhi Yani Zulqifli 24010310141038

PROGRAM STUDI TEKNIK INFORMATIKA – R2

JURUSAN MATEMATIKA

FAKULTAS MATEMATIKA ILMU PENGETAHUAN ALAM

UNIVERSITAS DIPONEGORO

SEMARANG

2012

2 | K r i p t o g r a f i | P l a y f a i r

DAFTAR ISI

DAFTAR ISI …………………………………………………………………………… 2

BAB I PENDAHULUAN ……………………………………………………………… 3

Rumusan Masalah ……………………………………………………………… 4

Tujuan ………………………………………………………………………….. 4

BAB II PEMBAHASAN ………………………………………………………………. 5

BAB III PENUTUP …………………………………………………………………… 17

3 | K r i p t o g r a f i | P l a y f a i r

BAB I PENDAHULUAN

Kriptografi adalah ilmu yang mempelajari kerahasiaan berita, dalam hal ini adalah

kerahasiaan sebaris huruf atau lebih yang di rahasiakan dengan melakukan Enkripsi dengan

menggunakan kunci tertentu, kunci ini dapat bermacam-macam bentuk, misalkan kata SAYA

bila di enkripsi dapat menjadi BHWZ atau SDJK menyesuaikan dengan kunci apa yang di

gunakan dalam melakukan enkripsi tersebut. Selain metode Enkripsi ada juga kebalikannya

yaitu Dekripsi, Dekripsi ini adalah kebalikan dari Enkripsi yaitu merubah kata / huruf /

kalimat yang telah di kodekan menjadi sebuah kata / huruf / kalimat yang readable ( mudah

di baca ).

Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan

informasi yaitu :

Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari

siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas

informasi yang telah disandi.

Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak

sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi

manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan,

dan pensubsitusian data lain kedalam data yang sebenarnya.

Autentikasi, adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan

sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling

memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi

keaslian, isi datanya, waktu pengiriman, dan lain-lain.

Non-repudiasi., atau nirpenyangkalan adalah usaha untuk mencegah terjadinya

penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang

mengirimkan/membuat.

4 | K r i p t o g r a f i | P l a y f a i r

Rumusan Masalah o Bagaimana membuat suatu program Playfair dengan menggunakan Bahasa C

Tujuan o Membuat suatu Program Enkripsi / Dekripsi dengan metode Playfair

menggunakan Bahasa C

5 | K r i p t o g r a f i | P l a y f a i r

BAB II

PEMBAHASAN

Sandi Playfair adalah salah satu teknik kriptografi. Dalam teknik

ini pesan dienkripsi berdasarkan pasangan huruf, bukan huruf tunggal seperti sandi

klasik lainnya. Sandi Playfair ditemukan

olehahli Fisika berkebangsaan Inggris bernama Sir Charles Wheatstone (1802 -

1875) namun dipromosikan oleh Baron Lyon Playfair (1819 - 1898) pada tahun 1854.

Dibandingkan dengan sandi-sandi lainnya, sandi Playfair dapat meningkatan keamanan

dalam pengiriman sebuah pesan rahasia sehingga dapat memberikan

jaminan integritas data serta menjaga kerahasiaan. Sandi Playfairpertama kali

digunakan untuk tujuan-tujuan taktis oleh pasukan Inggris dalam Perang Boer

II dan Perang Dunia I. Australia dan Jerman juga menggunakan sandi ini untuk tujuan

yang sama dalamPerang Dunia II. Sandi Playfair paling sering digunakan karena

penggunaannya yang sangat sederhana dan tidak memerlukan peralatan khusus untuk

membaca atau menerjemahkan suatu sandi yang bersifat rahasia. Pada perkembangan

selanjutnya, sandi ini tidak lagi digunakan oleh pasukan militer karena telah muncul

berbagai perangkat enkripsi digital untuk menerjemahkannya. Sandi Playfair dianggap

tidak aman lagi untuk menjaga suatu kerahasiaan pesan

karena komputer dengan piranti lunak tertentu dapat memecahkan suatu sandi dalam

hitungan detik.

Sandi Playfair menggunakan 25 huruf sebagai kunci yang disusun dalam bujur

sangkar dengan menghilangkan huruf J dari abjad. Susunan kunci di dalam bujur

sangkar tersebut diperluas dengan menambahkan kolom keenam dan baris keenam.

6 | K r i p t o g r a f i | P l a y f a i r

Tampilan program

Memasukkan teks

7 | K r i p t o g r a f i | P l a y f a i r

Memasukkan kata kunci “mahasiswa”

Ini adalah hasil dari enkripsi

8 | K r i p t o g r a f i | P l a y f a i r

Ini adalah hasil dari dekripsinya

Source Code

#include<stdio.h>

#include<conio.h>

#include<string.h>

/*kamus global*/

char plain[100], key[10], cipher[100], a[5][5], rf[100];

int l, flag=0, i, j, row=0, col=0, x, y;

int tampilan ();

/*menampilkan interface yang berisi tampilan awal*/

int pilih(int);

/*memanggil fungsi berdasarkan pilihan*/

void tampilanKey ();

/*

I.S : key belum ada

F.S : key terisi dengan inputan user

proses : menginput key yg diberikan user ke dalam matriks key

*/

9 | K r i p t o g r a f i | P l a y f a i r

int enkripsi(char[], char[]);

/*merubah plain teks menjadi cipher teks berdasarkan key*/

int dekripsi(char[], char[]);

/*merubah cipher teks menjadi plain teks berdasarkan key*/

int main()

{

/*kamus*/

int c;

/*algoritma*/

tampilan();

printf("masukkan pilihan anda: \n");

scanf("%d", &c);

if (c<1 || c>3) {

printf("masukkan pilihan yang tepat \n");

}

pilih(c);

}

/*body / realisasi fungsi*/

int tampilan (){

/*menampilkan interface yang berisi tampilan awal*/

/*kamus lokal*/

/*algoritma*/

printf("\n------------------------------------------------------\n");

printf("Program enkripsi & dekripsi menggunakn Playfair cipher\n");

printf("------------------------------------------------------\n");

printf("Anggoro Wicaksono / 24010310120029\n");

printf("------------------------------------------------------\n");

printf("[1] program enkripsi\n");

printf("[2] program dekripsi\n");

printf("[3] keluar\n");

printf("------------------------------------------------------\n");

10 | K r i p t o g r a f i | P l a y f a i r

return 0;

}

int pilih(int c){

/*memanggil fungsi berdasarkan pilihan*/

/*kamus lokal*/

int i;

/*algoritma*/

switch(c) {

case 1: {

fflush(stdin);

printf("masukkan plain teksnya: \n");

gets(plain);

l = strlen(plain);

printf("\nmasukkan key: \n");

gets(key);

for (i=0; i<strlen(key); i++){

if (key[i] == 'j')

key[i] = 'i';

}

for (i=0; cipher[i] != '\0'; i++)

cipher[i]='\0';

printf("\nkey: \n");

tampilanKey();

enkripsi(key, plain);

break;

}

case 2: {

fflush(stdin);

printf("masukkan cipher teksnya: \n");

gets(cipher);

11 | K r i p t o g r a f i | P l a y f a i r

l = strlen(cipher);

printf("\nmasukkan key: \n");

gets(key);

for (i=0; i<strlen(key); i++){

if (key[i] == 'j')

key[i] = 'i';

}

for (i=0; plain[i] != '\0'; i++)

plain[i]='\0';

printf("\nkey: \n");

tampilanKey();

dekripsi(key, cipher);

break;

}

case 3:{

exit(0);

}

}

return c;

}

void tampilanKey (){

/*

I.S : key belum ada

F.S : key terisi dengan inputan user

proses : menginput key yg diberikan user ke dalam matriks key

*/

for(i=0; i<strlen(key); i++){

flag=1;

for (j=0; j<i; j++){

if (key[i]==key[j])

flag=0;

12 | K r i p t o g r a f i | P l a y f a i r

}

if (flag==1){

a[row][col]=key[i];

printf(" %c", a[row][col]);

col++;

if (col==5){

printf("\n");

col=0;

row=row+1;

}

}

}

for (i=0; i<26; i++){

flag=1;

for (j=0; j<strlen(key); j++){

if(key[j]==i+97)

flag=0;

}

if (flag==1 && i!=9){

a[row][col]=i+97;

printf(" %c", a[row][col]);

col++;

if (col==5){

row=row+1;

col=0;

printf("\n");

}

}

}

}

int enkripsi(char key[], char plain[]){

13 | K r i p t o g r a f i | P l a y f a i r

/*merubah plain teks menjadi cipher teks berdasarkan key*/

/*kamus lokal*/

int r1=0,c1=0,r2=0,c2=0,p=0,q=0;

char *tambah="z";

/*algortima*/

if (l%2==1){

strcat(plain, tambah);

}

printf("\nplainteks: %s\n",plain);

printf("\ncipherteks: ");

j=1;

for(i=0;i<strlen(plain)-1;){

x=plain[i];

y=plain[j];

if(x=='j')

plain[i]='i';

if(y=='j')

plain[j]='i';

for(p=0; p<5; p++){

for(q=0; q<5; q++){

if(a[p][q]==x){

r1=p;

c1=q;

}

if(a[p][q]==y){

r2=p;

c2=q;

}

}

}

if(r1==r2){

14 | K r i p t o g r a f i | P l a y f a i r

cipher[i]=a[r1][(c1+1)%5];

cipher[j]=a[r2][(c2+1)%5];

printf("%c%c", cipher[i],cipher[j]);

}

else if(c1==c2){

cipher[i]=a[(r1+1)%5][c1];

cipher[j]=a[(r2+1)%5][c2];

printf("%c%c", cipher[i],cipher[j]);

}

else{

cipher[i]=a[r1][c2];

cipher[j]=a[r2][c1];

printf("%c%c",cipher[i],cipher[j]);

}

i+=2;

j+=2;

}

//printf("\n\ntekan Enter untuk kembali ke menu\n");

getch();

}

int dekripsi(char key[], char chiper[]){

/*merubah cipher teks menjadi plain teks berdasarkan key*/

/*kamus*/

int r1=0,c1=0,r2=0,c2=0,p=0,q=0;

/*algoritma*/

printf("\ncipherteks: %s\n",cipher);

printf("\nplainteks: ");

j=1;

for(i=0;i<strlen(cipher)-1;){

x=cipher[i];

y=cipher[j];

if(x=='j')

15 | K r i p t o g r a f i | P l a y f a i r

cipher[i]='i';

if(y=='j')

cipher[j]='i';

for(p=0; p<5 ;p++){

for(q=0; q<5; q++){

if(a[p][q]==x){

r1=p;

c1=q;

}

if (a[p][q]==y){

r2=p;

c2=q;

}

}

}

if(r1==r2){

rf[i]=a[r1][(c1-1)%5];

rf[j]=a[r2][(c2-1)%5];

printf("%c%c",rf[i],rf[j]);

}

else if(c1==c2){

rf[i]=a[(r1-1)%5][c1];

rf[j]=a[(r2-1)%5][c2];

printf("%c%c",rf[i],rf[j]);

}

else{

rf[i]=a[r1][c2];

rf[j]=a[r2][c1];

printf("%c%c",rf[i],rf[j]);

}

i+=2;

16 | K r i p t o g r a f i | P l a y f a i r

j+=2;

}

//printf("\n\ntekan Enter untuk kembali ke menu\n");

getch();

}

17 | K r i p t o g r a f i | P l a y f a i r

BAB III PENUTUP

Playfair adalah metode enkripsi / dekripsi yang lebih kuat dan robush jika di

bandingkan dengan metode cipher teks, dalam program di atas kita melihat bahwa dengan

menggunakan metode ini kita bisa mendapatkan hasil enkripsi yang kuat dan mempunyai

kemungkinan untuk di pecahkan sangat susah.