Sistem Sandi Vigenere

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Sistem Sandi Vigenere as PDF for free.

More details

  • Words: 3,880
  • Pages: 32
Sistem Sandi Vigenere Achmad Legia A. 0807100750 Aris Munandar. 0807100756 Rezki Priono. 0807100776 Tri Agustina R. 0807100783 Program Manajemen Persandian, Sekolah Tinggi Sandi Negara Jl. Raya H. Usa Putat Nugug, Ciseeng, Parung ­ Bogor

ABSTRAK Pada   akhir   abad   ke­16   ditemukan   sandi   Vigenere   yang   merupakan  pengembangan lebih lanjut daripada sandi Caesar. Sandi Vigenere menggunakan  sandi Caesar dengan bilangan geseran yang berbeda tiap hurufnya, sesuai dengan  sebuah kata kunci. Berbeda dengan sandi Caesar yang dapat dipecahkan melalui  analisis frekuensi sederhana, sistem sandi vigenere pada saat itu terlihat sangat  sulit   dipecahkan.   Sandi   vigenere   dijuluki   le   chiffre   indechiffrable   (sandi   yang  tidak terpecahkan)  hingga akhirnya  dapat dipecahkan  pada abad ke­19 dengan  cara analisis frekuensi lanjutan. Sistem sandi ini pertama kali dipopulerkan oleh Blaise de vigenere seorang  diplomat Perancis pada abad ke­15. Sistem sandi   vigenere adalah sistem sandi  substitusi   multialfabetik   yaitu   sistem   sandi   caesar   dengan   pergeseran   alphabet  yang berlainan disesuaikan kata kuncinya. Sistsem sandi substitusi adalah menjadi  dengan cara mengganti huruf­huruf pesan/ teks aslinya dengan huruf­huruf sandi.  Sistem sandi Caesar dan Vigenere merupakan metode sistem sandi substitusi.

1

KATA PENGANTAR

Puji dan syukur, Kami panjatkan kepada Tuhan Yang Maha Esa karena atas berkat  rahmat­Nya,   Kami   dapat   menyelesaikan   makalah   tepat   pada   waktunya.   Kami  mengucapkan terima kasih kepada dosen pembimbing kami Bapak Adi Prasetyo, karena  dengan   diberikannya   tugas   pembuatan   makalah   ini   dapat   memberikan   ilmu   yang  bermanfaat khususnya mengenai pemrograman khususnya bahasa pemrograman bahasa  C.   Kami   juga   mengucapkan   terima   kasih   kepada   pihak­pihak   yang   telah   banyak  membantu dalam pembuatan makalah ini.

Makalah   ini   disusun   untuk   memenuhi   tugas   mata   kuliah   struktur   data  algoritma dan pemrograman yang berkaitan dengan pembuatan program enkripsi  maupun dekripsi menggunakan system sandi klasik yaitu system sandi vigenere  yang berkaiatn langsung dengan kriptgrafi, dengan menggabungkan antara ilmu  kriptografi dan pemrograman, maka penulis membuat suatu  program sistem sandi  vigenere dengan menggunakan bahasa pemrograman C. Demikianlah makalah ini kami susun dengan referensi dari berbagai sumber  antara lain buku mata kuliah pemrograman, kriptografi dan juga dengan literature  melalui internet. Dengan ini kami berharap makalah ini dapat bermanfaat bagi  para pembaca. Kami   menyadari   dalam   penulisan   makalah   ini   masih   jauh   dari   kata  sempurna. Oleh karena itu Kami kan menerima dengan terbuka mengenai saran  dan kritik yang membangun demi proses perbaikan makalah ini.

Bogor, juli 2009

2

DAFTAR ISI

ABSTRAK

1

KATA PENGANTAR

2

DAFTAR ISI

3

BAB I

PENDAHULUAN

5

1.1

Latar Belakang Permasalahan

6

1.2

Identifikasi Masalah

6

1.3

Perumusan Masalah

6

1.4

Pembatasan Masalah

7

1.5

Tujuan Penulisan

7

1.6

Metode Penulisan

7

1.7

Sistematika Penulisan

7

BAB II

LANDASAN TEORI

9

2.1 Konsep Dasar Sistem Sandi Vigenere

9

2.2 Konsep Dasar Pemrograman Bahasa C

3

12

BAB III DETAIL IMPLEMENTASI/ SIMULASI

15

BAB IV ANALISIS DAN HASIL IMPLEMENTASI

21

BAB V

PENUTUP

30

5.1

Kesimpulan

30

5.2

Saran

30

DAFTAR PUSTAKA

32

DAFTAR TABEL

Tabel 2.1 Tabel vigenere

10

4

BAB I PENDAHULUAN

Masalah   keamanan   (security)   merupakan   salah   satu   hal     yang   penting   di   era  teknologi   informasi   sekarang   ini.   Banyak   kasus   cybercrime   yang   kita   dengar   dari  berbagai   media   massa.   Jriptografi   merupakan   dasar   pemahaman   tentang   pengamanan  terutama keamanan jaringan. Kriptografi telah banyak diaplikasikan di berbagai bidang  terutama   yang   menggunakan   teknologi   jaringan   komputer.   Bahkan   sekarang   ini  kriptografi   sudah   banyak   dikenal   orang   sebagai   contoh   dalam   transaksi   mesin   ATM,  transaksi   Bank,   kartu   kredit,   komunikasi   melalui   telepon,   akses   internet   atau   bahkan  pengaktifan   peluru   kendali   sekalipun.   Namun   semakin   berkembangnya   kriptografi  modern, kriptografi klasik hingga sekarang ini masih banyak digunakan, salah satunya  adalah sistem sandi vigenere. Dalam   kriptografi,   sandi   substitusi   adalah   jenis   metode   enkripsi   dimana   setiap  satuan pada teks terang digantikan oleh teks terang digantikan oleh teks tersandi dengan  sistem   yang   teratur,   suatu   “satuan”   dapat   berarti   satu   huruf   paling   (paling   umum),  pasangan   huruf,   suku   kata,   kata   dan   sebagainya.   Sang   penerima   pesan   baru   dapat  membaca pesan tersebut setelah melakukan substitusi balik terlebih dahulu. Pada sandi  substitusi , satuan­satuan pada teks terang diubah namun susunannya tetap. Kebalikannya  adalah sandi transposisi, dimana satuan­satuan teks terang susunannya diacak sedemikian  rupa sehingga tidak dapat terbaca, namun tidak mengubah/ mensubstitusikan huruf­huruf  tersebut. Sandi substitusi juga dikelompokkan menjadi berbagai jenis. Jika sandi tersebut  mensubstitusikan   huruf   demi   huruf,   maka   ia   disebut   sandi   substitusi   sederhana.   Jika  mensubstitusikan   dengan   urutan   yang   lebih   besar   disebut   sandi   substitusi   poligraf.  Sebuah sandi substitusi monoalfabetik menggunakan pola substitusi yang tetap diseluruh  pesan   (misal:   sandi   Caesar),   sedangkan   sandi   substitusi   polialfabetik   menggunakan  substitusi yang berbeda­beda sepanjang pesan (misal: sandi Vigenere).

5

1.1

Latar Belakang Permasalahan  Keamanan merupakan salah satu aspek yang penting dalam sebuah sistem  informasi.   Banyak   orang   menyiasati   bagaimana   cara   mengamankan   informasi  yang   penting   bagi   orang   tersebut.   Kriptografi   adalah   ilmu   yang   mempelajari  bagaimana menjaga keamanan suatu pesan (plaintext). Tugas utama kriptografi  adalah untuk menjaga agar baik pesan atau kunci ataupun keduanya tetap terjaga  kerahasiannya.   Namun   kriptografi   tidak   mudah   untuk   dimengerti,   ditambah  membutuhkan   waktu   yang   lama   untuk   hanya   sekedar   menyandi   suatu   berita  apabila dilakukan secara manual. Oleh karena itu, Bagaimana kriptografi dapat  mudah digunakan dan tidak membutuhkan waktu yang lama?.

1.2

Identifikasi masalah Sistem   vigenere   merupakan   sistem   sandi   yang   lumayan   sulit   untuk  dipecahkan, terutama jika menggunakan cara manual. Oleh karena seiring dengan  berkembangnya   teknologi   ,   system   sandi   ini   dibuat   sedemikian   hingga   agar  mudah   dalam   pemakaiannya   namun   tetap   menjaga   aspek   keamanan  informasinya.

1.3

Perumusan Masalah Rumusan   makalah   ini   adalah   mengenai   bagaimana   cara   untuk  menuangkan system sandi vigenere dalam suatu program bahasa C.

6

1.4

Pembatasan Masalah Sistem Vigenere ini adalah merupakan salah satu bentuk sistem sandi yang  dapat dituangkan dalam bentuk source code program bahasa C, sehingga pada  makalah ini akan dijelaskan tentang bagaimana bentuk coding vigenere, contoh  pemakaian beserta hasil tampilannya setelah di running.

1.5

Tujuan Penulisan Tujuan   dibuatnya   makalah   ini   adalah   untuk   menguji   cara   implementasi  sistem  vigenere kedalam bahasa pemrograman  disertai  analisis sehingga  dapat  menambah pengetahuan serta kemampuan kami dalam penerapan algoritma dan  pemrograman   yang   berkaitan   dengan   kriptografi,   sekaligus   untuk   memenuhi  salah satu tugas kuliahstruktur data algoritma dan pemrograman.

1.6

Metode Penulisan Pembuatan   makalah   ini   dilakukan   dengan   beberapa   tahap   antara   lain  pengumpulan   data/   informasi,   pengolahan   data/informasi,   analisis/sintesis,  mengambil  simpulan, serta merumuskan saran  dan  kesimpulan. Beberapa  cara  pengumpulan   data   yang   kami   lakukan   diantaranya   adalah   dengan   metode  kepustakaan maupun dari media internet.

1.7

Sistematika Penulisan Adapun sistematika penulisan makalah ini adalah sebagai berikut: •

Abstraksi 7

Menjelaskan gambaran umum mengenai isi makalah. •

Kata Pengantar



Daftar Isi



Daftar Tabel



Bab I Pendahuluan Berisi   mengenai   latar   belakang   masalah,   mengidentifikasi   masalah,  perumusan   masalah,   pembatasan   masalah,   tujuan   penulisan,   metode  penulisan, dan sistematika penulisan.



Bab II Landasan Teori Berisi   mengenai   konsep   dasar   mengenai   bab   yang   dibahas   dalam  makalah   ini   yaitu   “system   vigenere”,   selain   itu   dalam   bab   ini   berisi  mengenai   konsep   dasar   pembuatan   program   sistem   sandi   vigenere   yang  diaplikasikan dalam bentuk source code bahasa C.



Bab III Detail Implementasi dan Simulasi  Menampilkan   source   code   untuk   sistem   vigenere   yang   dilengkapi  denagn contoh tampilannya



Bab IV Analisis dan Hasil Implementasi\



Bab V Penutup



Daftar Pustaka

8

BAB II LANDASAN TEORI

Sandi   Vigenere   adalah   metode   menyandi   teks   alphabet   dengan   menggunakan  deretan   sandi   Caesar   berdasarkan   huruf­huruf   pada   kata   kunci.   Sandi   Vigenere  merupakan bentuk sederhana dari sandi polialfabetik. Kelebihan sandi ini dibanding sandi  Caesar  dan sandi  monoalfabetik  lainnya  adalah sandi ini  tidak begitu  rentan terhadap  metode   pemecahan   sandi   yang   disebut   analisis   frekuensi.   Giovan   Batista   Belaso  menjelaskan metode ini dalam buku La cifra del. Sig. Giovan Batista Nelaso (1553) dan  disempurnakan oleh diplomat Perancis Blaise de Vigenere pada tahun 1586. Pada abad  ke­19 banyak orang yang mengira vigenere adalah penemu sandi ini, sehingga sandi ini  dikenal sebagai “sandi Vigenere”. Sandi   ini   dikenal   dengan   luas   karena   cara   kerjanya   mudah   dimengerti   dan  dijalankan   dan   bagi   para   pemula   sulit   dipecahkan.   Pada   saat   kejayaannya,   sandi   ini  dijuluki   le   chiffre   indenchiffrable   (bahasa   perancis:   “sandi   yang   tak   terpecahkan”).  Metode pemecahan sandi ini baru ditemukan pada abadke­19. Pada tahun 1854, Charles  Babbage menemukan cara untuk memecahkan sandi vigenere. Metode ini dinamakan tes  Kasiski karena Friedrich Kasiskilah yang pertama mempublikasikannya.

2.1

Konsep Dasar sistem sandi vigenere Sistem sandi vigenere merupakan pengembangan dari sandi Caesar, setiap  huruf dari suatu teks terang digantikan dengan huruf lain yang memiliki perbedaan  tertentu   pada   urutan   alphabet.   Misalnya   pada   sandi   Caesar   dengan   geseran   3,  contohnya huruf “A” diubah menjadi huruf “D”, “B” menjadi “E” dan seterusnya.  Sandi Vigenere terdiri dari sandi Caesar dengan niali geseran yang berbeda.

9

Untuk menyandi suatu pesan, digunakan suatu tabel alfabet yang disebut  tabel   vigenere.   Tabel   vigenere   berisi   alfabet   yang   dituliskan   dalam   26   baris,  masing­masing baris digeser satu urutan kekiri dari baris sebelumnya, membentuk  ke­26 kemungkinan sandi Caesar. Berikut merupakan table vigenere:

  

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

A

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W X

B

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W X

C

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W X

D

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W X

E

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W X

F

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W X

G

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W X

H

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W X

I

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W X

J

J

K

L

M

N

O

P

Q

R

S

T

U

V

W X

K

K

L

M

N

O

P

Q

R

S

T

U

V

W X

L

L

M

N

O

P

Q

R

S

T

U

V

W X

M

M

N

O

P

Q

R

S

T

U

V

W X

N

N

O

P

Q

R

S

T

U

V

W X

O

O

P

Q

R

S

T

U

V

W X

P

P

Q

R

S

T

U

V

W X

Q

Q

R

S

T

U

V

W X

R

R

S

T

U

V

W X

S

S

T

U

V

W X

T

T

U

V

W X

U

U

V

W X

V

V

W X

W

W X

X

X

Y

Y

Y

Z

Z

Y

Z

Y

Z

A

Y

Z

A

B

Y

Z

A

B

C

Y

Z

A

B

C

D

Y

Z

A

B

C

D

E

Y

Z

A

B

C

D

E

F

Y

Z

A

B

C

D

E

F

G

Y

Z

A

B

C

D

E

F

G

H

Y

Z

A

B

C

D

E

F

G

H

I

Y

Z

A

B

C

D

E

F

G

H

I

J

Y

Z

A

B

C

D

E

F

G

H

I

J

K

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W X

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W X

 Tabel 2.1 Tabel vigenere yang digunakan secara manual

10

Y

Setiap huruf disandi dengan menggunakan baris­baris yang berbeda sesuai  kata kunci yang diulang. Misalnya: Teks sandi: serbuberlin Kata   kunci:   pizza   (ket:   Kata   kunci   harus   diketahui   oleh   pengirim   dan  penerima pesan) Teks sandi: ….? Huruf pertama pada teks terang “S” disandi dengan menggunakan huruf  pertama pada kunci “P”. Pada baris P dan kolom S di tabel vigenere, terdapat huruf  H. Demikian pula untuk huruf kedua digunakan huruf yang terletak pada baris I  (huruf kedua kata kunci) dan kolom E (huruf kedua teks terang), yaitu huruf M.  Proses ini dijalankan terus sehingga

Tt:    s    e   r  b   u   b   e   r    l   I   n  Kk:   p   I   z   z   a   p   I    z   z   a   p Ts:   H  M  Q  A  U  Q  M  Q  K   I   C Proses sebaliknya yaitu mengubah teks sandi menjadi teks sandi disebut  dekripsi. Dekripsi dilakuka dengan mencari huruf teks bersandi pada baris berjudul  huruf   dari   kata   kunci.   Misalnya   pada   contoh   diatas,   untuk   huruf   pertama   kita  mencari huruf “H” (huruf pertama pada teks sandi) pada huruf “P” (huruf pertama  pada kata kunci) yang terdpat dalam kolom S. Lalu M terdapat pada baris I di  kolom   E,   sehingga   diketahui   huruf   kedua   teks   terang   adalah   E   dan   seterusnya  hingga didapat teks terang “serbuberlin”. Enkripsi (penyandian) dengan sandi Vigenere juga dapat di tuliskan secara  matematis, dengan menggunakan penjumlahan dan operasi modulus, yaitu : Ci = (Pi + Ki) mod 26

11

Dan dekripsi, Pi = (Ci – Ki) mod 26 Keterangan : Ci adalah huruf ke­I pada teks tersandi, Pi adalah huruf ke­I  pada teks terang, KI  adalah huruf ke­i pada kata kunci, dan mod adalah operasi  modulus (sisa pembagian).

2.2

Konsep Dasar Pemrograman Bahasa C 1. MEMASUKAN DATA Beberapa fungsi pustaka yang biasa digunakan adalah :

• scanf() Fungsi   pustaka   scanf()   digunakan   untuk   menginput   data   berupa   data  numeric, karakter dan string secara terformat.



Kode penentu format : 

%c : Membaca sebuah karakter



%s : Membaca sebuah string



%i, %d : Membaca sebuah bilangan bulat (integer)



 %o : Membaca sebuah bilangan octal



 %x : Membaca sebuah bilangan heksadesimal



%u : Membaca sebuah bilangan tak bertanda 12

• Tipe data Dalam bahasa C terdapat lima tipe data dasar, yaitu : 1.

char %c (Karakter/string)

2.

int %i, %d (Integer/bilangan bulat)

3.

float %f (Float/bilangan pecahan)

4.

double %If (Pecahan presisi ganda)

5.

void (Tidak bertipe)

• Deklarasi Variabel Bentuk umum pendeklarasian suatu variable adalah : Nama_tipe nama_variabel; Contoh : int x; II Deklarasi x bertipe integer char y, huruf, nim[10]; II Deklarasivariable bertipe char

• getch() 

Karakter   yang   dimasukan   tidak   perlu   diakhiri   dengan   penekanan  tombol enter.



Jika menggunakan fungsi getch() karakter yang dimasukan tidak  akan   di   tampilkan   pada   layer   sehingga   sering   digunakan   untuk  meminta inputan berupa password. 13

2.  MENAMPILKAN DATA • Menampilkan data ke layar monitor 

Menggunakan fungsi printf(), puts(), dan putchar().



Fungsi   printf()   digunakan   untuk   menampilkan   semua   jenis   data  (numericdan karakter)

• Konstanta \n : ganti baris baru (new line)

• Mengatur tampilan bilangan pecahan (float). Bentuk umum : • printf(“%m.nf”, argument); m : menyatakan panjang range. n : menyatakan jumlah digit di belakang koma argument : nilai atau variable yang akan ditampilkan. Contoh : printf(“%5.2f”, nilai); (artinya variable nilai akan di tampilkan sebanyak 5 digit dengan 2  digit di belakang koma)

14

3.  Operator •Operator Penugasan dalam bahasa C berupa tanda sama dengan (“=”). Contoh : nilai = 80; A = x * y; •Operator Arirmatika Bahasa C menyediakan lima operador aritmatika, yaitu :  : untuk perkalian  / : untuk pembagian  % : untuk sisa pembagian (modulus)  + : untuk pertambahan ­ : untuk pengurangan

•Operator Hubungan (Perbandingan) Operator   Hubungan   digunakan   untuk   membandingkan  hubungan antara dua buah operand, biasanya berupa tanda <=, >=, ==,  dll. •Operator Unary Sebagai contoh adalah – atau ++. Contoh : i++

15

•Komentar Program Dengan   kata   lain,   komentar   program   hanya   merupakan  keterangan   atau   penjelasan   program.   Untuk   memberikan   komentar  atau penjelasan dalam bahasa C digunakan pembatas /* dan */ atau  menggunakan tanda // untuk komentar yang hanya dari satu baris.

4.  Penyeleksian Kondisi Penyeleksian kondisi digunakan untuk mengarahkan perjalanan suatu proses. 1. STRUKTUR KONDISI ”IF....” Struktur if dibentuk dari pernyataan if dan sering digunakan untuk  menyeleksi suatu kondisi tunggal. Bila proses yang diseleksi terpenuhi  atau   bernilai   benar,   maka   pernyataan   yang   ada   di   dalam   blok   if   kan  diproses dan dikerjakan. Bentuk umum struktur kondisi if adalah : if(kondisi) pernyataan;

2.  STRUKTUR KONDISI ”IF.....ELSE....” Dalam struktur kondisi if.....else minimal terdapat dua pernyataan.  Jika   kondisi   yang   diperiksa   bernilai   benar   atau   terpenuhi   maka  pernyataan   pertama   yang   dilaksnakan   dan   jika   kondisi   yang   diperiksa  bernilai salah maka pernyataan yang kedua yang dilaksanakan. Bentuk  umumnya adalah sebagai berikut : if(kondisi) pernyataan­1 16

else pernyataan­2

3.  STRUKTUR KONDISI ”SWITCH....CASE....DEFAULT...” Struktur   kondisi   switch....case....default   digunakan   untuk  penyelesaian kondisi  dengan  kemungkinan yang  terjadi cukup  banyak.  Struktur   ini   akan   melaksanakan   salah   satu   dari   beberapa   pernyataan  ’case’   tergantung   nilai   kondisi   yang   ada   di   dalam   switch.   Selanjutnya  proses diteruskan hingga ditemukan pernyataan ’break’. Jika tidak ada  nilai pada case yang sesuai dengan kondisi, maka proses akan diteruskan  kepada   pernyataan   yang   ada   di   bawah   ’default’.   Bentuk   umum   dari  struktur kondisi ini adalah : switch(kondisi) { Case 1 : pernyataan­1; Break; Case 2 : pernyataan­2; Break; ..... ..... Case n :pernyataan­n; Break; Default : pernyataan­m 17

} 4.  STRUKTUR PERULANGAN “FOR” Struktur perulangan  for  biasa digunakan  untuk  mengulang suatu  proses   yang   telah   diketahui   jumlah   perulangannya.   Dari   segi  penulisannya,   struktur   perulangan   for   tampaknya   lebih   efisien   karena  susunannya lebih  simpel  dan sederhana.  Bentuk umum  perulangan for  sebagai berikut : for(inisialisasi; syarat; penambahan) pernyataan;

5.  Array (Larik) Dilihat dari dimensinya array dapat dibagi menjadi Array dimensi  satu, array dimensi dua dan array multi­dimensi. 1.  ARRAY DIMENSI SATU • Setiap elemen array dapat diakses melalui indeks. • Indeks arraysecara default dimulai dari 0. • Deklarasi Array Bentuk umum : tipe_array nama_array[ukuran]; 2.  ARRAY DIMENSI DUA • Array   dua   dimensi   merupakan   array   yang   terdiri   dari   m   buah  baris dan n buah kolom.

18

Bentuknya dapat berupa matriks atau tabel. • Deklarasi array : tipe_array nama_array[baris][kolom]; 3.  ARRAY MULTI­DIMENSI Array multi­dimensi merupakan array yang mempunyai ukuran  lebih dari dua. Bentuk pendeklarasian array sama saja dengan array  dimensi satu maupun array dimensi dua. Bentuk umumnya yaitu : tipe_array nama_array[ukuran1][ukuran2]...[ukuranN];

6.  FILE   JUDUL   DAN   BEBERAPA   FUNGSI   PUSTAKA   DALAM  BAHASA C • Header File ”stdio.h” Fungsi pustakanya seperti printf() dan scanf() • Header File ”conio.h” Fungsi pustakanya seperti clrscr() dan getch() • Fungsi Operasi String (tersimpan dalam header file”string.h” • strcpy() Berfungsi untuk menyalin suatu string asal ke variable string  tujuan. Bentuk umum : strcpy(var_tujuan, string_asal);

19

• strlen() Berfungsi untuk memperoleh jumlah karakter dari suatu string. Bentuk umum : strlen(string); • strupr() Digunakan   untuk   mengubah   setiap   huruf   dari   suatu   string  menjadi huruf capital. Bentuk umum : strupr(string); • strlwr()

20

BAB IV ANALISIS DAN HASIL IMPLEMENTASI

Akhirnya dari berbagai analisa implementasi dapat kita mabil kesimpulan bahwa  sebenarnya sistem sandi vigenere mempunyai beberapa kelebihan dan kekurangan. Kelebihan : •

Sistem   sandi   vigenere   merupakan   sistem   sandi   yang   lumayan   sulit   untuk  dipecahkan,   terutama   jika   menggunakan   cara   manual.   Lebih   sulit   dipecahkan  dibandingkan dengan sistem sandi substitusi monoalfabet. Dahulu sempat diberi  julukan sebagai sandi yang tak terpecahkan.  



Mudah diwujudkan dalam bahasa pemrogaman.



Mudah digunakan untuk enkripsi dan dekripsi.

Kekurangan : •

Vigenere dapat dipecahkan dengan metode kasiski.



Seiring dengan perkembangan zaman, sistem vigenere sudah jarang digunakan.

4.1

Berikut ini adalah penjelasan mengenai program yang telah dibangun :

1. Keterangan / komentar mengenai program. /*  PROGRAM ENKRIPSI DAN DEKRIPSI  */ 21

/*                  SISTEM VIGENERE              */ /*  Kelompok I

    */

/*  Tk. I Manajemen Persandian                */

2. Merupakan header file bagi fungsi pustaka yang akan diikuti dalam program. #include<stdio.h> #include<string.h> #include

3. Berupa fungsi utama. void enkripsi(void); void dekripsi(void); main() {

4. Variabel Int pilihan;

5. Fungsi pustaka conio.h untuk membersihkan layar. Clrscr();

22

6. Prototype dari fungsi pustaka stdio.h. printf(”             **************************************\n”); printf(”               SISTEM SANDI VIGENERE\n”); printf(”                     Kelompok I”); printf(”              Tk. I Manajemen Persandian\n”) printf(”            ***************************************\n”); printf(” masukan pilihan anda (1/2) !\n”); printf(”1.  Enkripsi\n”); printf(”2.  Dekripsi\n”); printf(”Pilihan Anda\n”); printf(”%d”,&pilihan); printf(”\n\n”);

7. Berupa pemilihan kondisi. Switch(pilihan) { case 1 : enkripsi(); break; case 2 : dekripsi(); break; default:printf(”masukan tidak ada...”); }

8. Fungsi pustaka dari conio.h.

23

Getch(); }

Void enkripsi(void) {

9. Variabel. int periode,pjg_plaintext,n,i; unsigned char key[25],ciphertext[225];

printf(masukan kunci:”);

10. Deklarasi variable. Scanf(”%s”,&key);

11. Fungsi pustaka string.h untuk menghitung panjang string. periode=strlen(key) printf(”panjang periode=%d\n”,periode); printf(”masukan plaintext:\n”); scanf(”%s”,&plaintext); pjg_plaintext=strlen(plaintext); printf(”Panjang plaintext:%d\n”,pjg_plaintext);

24

12. Fungsi pustaka string.h untuk mengubah abjad ke huruf capital. strupr(key); strupr(plaintext);

13. Pemilihan kondisi ”for”. for(i=1;i<=pjg_plaintext;i++) {

14. Operasi aritmatika untuk mencari nulls. n=i%periode;

15. Pemilihan kondisi ”if...else...” if(n!0)

16. Operasi aritmatika untuk enkripsi. ciphertext[i­1]=((key[n­1]+plaintext[i­1])%26)+65; else ciphertext[i­1]=((key[periode­1]+plaintext[i­1])%26)+65; } printf(”Ciphertext:%s\n”,ciphertext); }

25

void dekripsi(void) {

17. Variabel. int periode,pjg_ciphertext,n,i; unsigned char key[25],ciphertext[255],plaintext[255];

18. Fungsi pustaka dari header file stdio.h. printf(”masukan kunci:\n”); scanf(”%s”,&key);

19. Fungsi pustaka dari string.h untuk menghitung panjang string. Periode=strlen(key);

printf(”panjang periode:%d\n”,periode); printf(”masukan ciphertext:\n”); scanf(”%s”,&ciphertext); pjg_ciphertext=strlen(ciphertext); printf(”panjang ciphertext:%d\n”,pjg_ciphertext);

20. Penyelesaian kondisi ”for”. For(i=1;i<=pjg_ciphertext;i++) {

26

21. Operasi aritmatika untuk menghitung jumlah nulls. N=i%periode;

22. Penyelesaian kondisi ”if....else....”. if(n!=0) if(ciphertext[i­1]
4.2

HASIL IMPLEMENTASI 1.

PROGRAM ENKRIPSI

27

******************************** SISTEM SANDI VIGENERE Kelompok I Tk. I manajemen Persandian ******************************** Masukan pilihan anda (1/2) ! 1.  Enkripsi 2.  Dekripsi Pilihan Anda : 1

Masukan kunci :CRYPTO Panjang periode=6 Masukan Plaintext: SEKOLAHTINGGISANDINEGARAX Panjang Plaintext:25 Ciphertext : UVIDEOJKGCZUKJYCWWPVEPKOZ

2.

PROGRAM DEKRIPSI

28

******************************** SISTEM SANDI VIGENERE Kelompok I Tk. II manajemen Persandian ******************************** Masukan pilihan anda (1/2) ! 1.  Enkripsi 2.  Dekripsi Pilihan Anda : 2

Masukan kunci :CRYPTO Panjang periode=6 Masukan ciphertext: UVIDEOJKGCZUKJYCWWPVEPKOZ Panjang ciphertext:25 Ciphertext : SEKOLAHTINGGISANDINEGARA

29

BAB V PENUTUP

5.1

Kesimpulan Sistem Sandi Vigenere diperkenalkan oleh Blaise de vigenere pada tahun  1585 dalam ”Traicte des Chiffer”, sebagai bentuk pengembangan dari metode  monoalphabetic.   Metode   ini   juga   merupakan   dasar   dari   polyalphabetic  substitusion chiper. Beberapa ketentuan dalam metode ini adalah:  Setiap kunci dapat disubstitusikan dengan bermacam­macam kunci yang  lainnya.  Menggunakan kata kunci.  Kata kunci digunakan secara berulang.  Kata kunci digunakan untuk menentukan enkripsi setiap alphabet dalam  palintext.  Huruf ke­i dalam plaintext dispesifikasikan oleh alphabet yang digunakan  dalam kunci.  Penggunaan alphabet bisa berulang.

5.2

Saran Satu masalah utama simple substitusin chiper adalah cipher tersebut sangat  rawan terhadap analisis frekuensi. Dengan demikian cipher text yang cukup besar  dapat   dengan   mudah   dipatahkan   menggunakan   mapping   frekuensi   dari   huruf­

30

hurufnya untuk menghetahui frekuensi dari english text. Oleh karena itu untuk  membuat cipher lebih aman dapat dilakukan dengan salah satu pendekatan yang  paling   umum   yaitu   menekan   data   berfrekuensi   normal   dengan   menggunakan  lebih dari satu alphabet untuk melakukan encrypt pesan 

31

DAFTAR PUSTAKA



Kurniawan, Yusuf, Kriptografi, Keamanan Internet dan Jaringan Komunikasi,  Penerbit Informatika.2004



Munir, Rinaldi, Kriptografi, Penerbit Informatika. 2006



www.google.com

32

Related Documents

Sandi
June 2020 9
Sandi
May 2020 10
Sandi Ndut
June 2020 7
Sandi Koordinat.docx
May 2020 13
Sandi Negara
December 2019 17