Sistem Sandi Vigenere

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

description

Giovan Batista Belaso menjelaskan metode Sistem Sandi Vigenere 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 Vigenere adalah metode menyandi teks alphabet dengan menggunakan deretan sandi Caesar berdasarkan huruf­huruf pada kata kunci.

Transcript of Sistem Sandi Vigenere

Page 1: Sistem Sandi Vigenere

Sistem Sandi Vigenere

Achmad Legia A. 0807100750Aris Munandar. 0807100756Rezki 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

Page 2: Sistem Sandi Vigenere

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

Page 3: Sistem Sandi Vigenere

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 12

3

Page 4: Sistem Sandi Vigenere

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

Page 5: Sistem Sandi Vigenere

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

Page 6: Sistem Sandi Vigenere

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

Page 7: Sistem Sandi Vigenere

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

Page 8: Sistem Sandi Vigenere

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

Page 9: Sistem Sandi Vigenere

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

Page 10: Sistem Sandi Vigenere

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 Y Z

B 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

C 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 B

D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D

F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E

G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F

H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G

I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H

J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I

K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J

L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K

M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L

N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M

O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N

P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O

Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P

R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q

S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R

T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S

U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T

V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U

W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V

X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W

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

Z 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 Y

 Tabel 2.1 Tabel vigenere yang digunakan secara manual

10

Page 11: Sistem Sandi Vigenere

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

Page 12: Sistem Sandi Vigenere

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

Page 13: Sistem Sandi Vigenere

• 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

Page 14: Sistem Sandi Vigenere

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

Page 15: Sistem Sandi Vigenere

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

Page 16: Sistem Sandi Vigenere

•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

Page 17: Sistem Sandi Vigenere

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

Page 18: Sistem Sandi Vigenere

}

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

Page 19: Sistem Sandi Vigenere

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

Page 20: Sistem Sandi Vigenere

• 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

Page 21: Sistem Sandi Vigenere

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

Page 22: Sistem Sandi Vigenere

/*                  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<conio.h>

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

Page 23: Sistem Sandi Vigenere

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

Page 24: Sistem Sandi Vigenere

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

Page 25: Sistem Sandi Vigenere

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

Page 26: Sistem Sandi Vigenere

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

Page 27: Sistem Sandi Vigenere

21. Operasi aritmatika untuk menghitung jumlah nulls.

N=i%periode;

22. Penyelesaian kondisi ”if....else....”.

if(n!=0)

if(ciphertext[i­1]<key[n­1])

plaintext[i­1]=((ciphertext[i­1]­key[n­1])+26)+65;

else

plaintext[i­1]=(ciphertext[i­1]­key[n­1])+65;

else

if(ciphertext[i­1]<key[periode­1])

plaintext[i­1]=((ciphertext[i­1]­key[periode­1])+26)+65;

else

plaintext[i­1]=(ciphertext[i­1]­key[periode­1])+65;

}

printf(”plaintext:%s\n”,plaintext);

}

4.2 HASIL IMPLEMENTASI

1. PROGRAM ENKRIPSI

27

Page 28: Sistem Sandi Vigenere

********************************

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

Page 29: Sistem Sandi Vigenere

********************************

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

Page 30: Sistem Sandi Vigenere

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

Page 31: Sistem Sandi Vigenere

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

Page 32: Sistem Sandi Vigenere

DAFTAR PUSTAKA

• Kurniawan, Yusuf, Kriptografi, Keamanan Internet dan Jaringan Komunikasi, 

Penerbit Informatika.2004

• Munir, Rinaldi, Kriptografi, Penerbit Informatika. 2006

• www.google.com

32