Anda di halaman 1dari 17

KRIPTOGRAFI Plalyfair

Disusun oleh:

Sandhi Yani Zulqifli

24010310141038

PROGRAM STUDI TEKNIK INFORMATIKA R2 JURUSAN MATEMATIKA FAKULTAS MATEMATIKA ILMU PENGETAHUAN ALAM UNIVERSITAS DIPONEGORO SEMARANG 2012

1|Kriptografi | Playfai r

DAFTAR ISI
DAFTAR ISI BAB I PENDAHULUAN Rumusan Masalah Tujuan .. BAB II PEMBAHASAN . BAB III PENUTUP 2 3 4 4 5 17

2|Kriptografi | Playfai 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.

3|Kriptografi | Playfai 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

4|Kriptografi | Playfai r

BAB II PEMBAHASAN

Sandi klasik lainnya.

Playfair adalah

salah

satu teknik kriptografi.

Dalam

teknik

ini pesan dienkripsi berdasarkan pasangan huruf, bukan huruf tunggal seperti sandi Sandi Playfair ditemukan Charles Wheatstone (1802 olehahli Fisika berkebangsaan Inggris bernama Sir

1875) namun dipromosikan oleh Baron Lyon Playfair (1819 - 1898) pada tahun 1854. Dibandingkan dengan sandi-sandi lainnya, sandi Playfair dapat meningkatan keamanan dalam pengiriman untuk sebuah tujuan-tujuan pesan menjaga taktis rahasia sehingga dapat memberikan kali Boer

jaminan integritas data serta digunakan

kerahasiaan.

Sandi Playfairpertama dalam Perang

oleh pasukan Inggris

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.

5|Kriptografi | Playfai r

Tampilan program

Memasukkan teks

6|Kriptografi | Playfai r

Memasukkan kata kunci mahasiswa

Ini adalah hasil dari enkripsi

7|Kriptografi | Playfai 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 */
8|Kriptografi | Playfai 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");
9|Kriptografi | Playfai 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);


10 | 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;
11 | 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[]){


12 | 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){
13 | 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')
14 | 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;
15 | 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(); }

16 | 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.

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

Anda mungkin juga menyukai