Anda di halaman 1dari 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 12

3
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 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
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<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
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]<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
********************************

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