Menurut
Wikipedia,
Kriptografi (atau kriptologi; dari bahasa Yunani κρυπτός kryptós, "tersembunyi, rahasia"; dan γράφειν graphein, "menulis", atau -λογία logi, "ilmu") merupakan keahlian dan ilmu dari cara-cara untuk komunikasi aman pada kehadirannya di pihak ketiga. Secara umum, kriptografi ialah mengenai mengkonstruksi dan menganalisis protokol komunikasi yang dapat memblokir lawan; berbagai aspek dalam keamanan informasi seperti data rahasia, integritas data, autentikasi, dan non-repudansi merupakan pusat dari kriptografi modern. Kriptografi modern terjadi karena terdapat titik temu antara disiplin ilmu matematika, ilmu komputer, dan teknik elektro. Aplikasi dari kriptografi termasuk ATM, password komputer, dan E-commerce.
Sandi Vigenère adalah metode menyandikan teks alfabet dengan menggunakan deretan sandi Caesar berdasarkan huruf-huruf pada kata kunci. Sandi Vigenère merupakan bentuk sederhana dari sandi substitusi 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 Belaso (1553); dan disempurnakan oleh diplomat Perancis Blaise de Vigenère, pada 1586. Pada abat ke-19, banyak orang yang mengira Vigenère adalah penemu sandi ini, sehingga, sandi ini dikenal luas sebagai "sandi Vigenère".
Sandi ini dikenal luas karena cara kerjanya mudah dimengerti dan dijalankan, dan bagi para pemula sulit dipecahkan. Pada saat kejayaannya, sandi ini dijuluki le chiffre indéchiffrable (bahasa Prancis: 'sandi yang tak terpecahkan'). Metode pemecahan sandi ini baru ditemukan pada abad ke-19. Pada tahun 1854, Charles Babbage menemukan cara untuk memecahkan sandi Vigenère. Metode ini dinamakan tes Kasiski karena Friedrich Kasiski-lah yang pertama mempublikasikannya.
Cara kerja
Sandi Vigenère sebenarnya merupakan pengembangan dari
sandi Caesar.
Pada sandi Caesar, setiap huruf teks terang digantikan dengan huruf
lain yang memiliki perbedaan tertentu pada urutan alfabet. Misalnya pada
sandi Caesar dengan geseran 3,
A menjadi
D,
B menjadi
E and dan seterusnya. Sandi Vigenère terdiri dari beberapa sandi Caesar dengan nilai geseran yang berbeda.
Untuk menyandikan suatu pesan, digunakan sebuah tabel alfabet yang disebut
tabel Vigenère (
gambar).
Tabel Vigenère berisi alfabet yang dituliskan dalam 26 baris,
masing-masing baris digeser satu urutan ke kiri dari baris sebelumnya,
membentuk ke-26 kemungkinan sandi Caesar. Setiap huruf disandikan dengan
menggunakan baris yang berbeda-beda, sesuai kata kunci yang diulang
Misalnya,
teks terang yang hendak disandikan adalah perintah "Serbu Berlin":
- serbuberlin
Sedangkan kata kunci antara pengirim dan tujuan adalah "Pizza"
- "PIZZA" diulang sehingga jumlah hurufnya sama banyak dengan teks terang:
- PIZZAPIZZAP
Huruf pertama pada teks terang,
S, disandikan dengan menggunakan baris berjudul
P, huruf pertama pada kata kunci. Pada baris
P dan kolom
S di tabel Vigenère, 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
Teks terang: |
serbuberlin |
Kata kunci: |
PIZZAPIZZAP |
Teks bersandi: |
HMQAUQMQKIC |
Proses sebaliknya (disebut
dekripsi),
dilakukan dengan mencari huruf teks bersandi pada baris berjudul huruf
dari kata kunci. Misalnya, pada contoh di atas, untuk huruf pertama,
kita mencari huruf
H (huruf pertama teks tersandi) pada baris
P (huruf pertama pada kata kunci), yang terdapat pada kolom
S, sehingga huruf pertama adalah
S. Lalu
M terdapat pada baris
I di kolom
E, sehingga diketahui huruf kedua teks terang adalah
E, dan seterusnya hingga didapat perintah "
serbuberlin".
Enkripsi (penyandian) dengan sandi Vigenère juga dapat dituliskan secara matematis, dengan menggunakan penjumlahan dan
operasi modulus, yaitu:
atau C = P + K kalau jumlah dibawah 26 & - 26 kalau hasil jumlah di atas 26
dan dekripsi,
atau P = C - K kalau hasilnya positif & + 26 kalau hasil pengurangan minus
Keterangan:
adalah huruf ke-i pada teks tersandi,
adalah huruf ke-i pada teks terang,
adalah huruf ke-i pada kata kunci, dan
adalah
operasi modulus (sisa pembagian).
Pehitungan Sandi Vigenere
Rumus enkripsi vigenere cipher :
atau
Ci = ( Pi + Ki ) – 26 kalau hasil penjumlahan
Pi dan
Ki lebih dari 26
Rumus dekripsi vigenere cipher :
atau
Pi = ( Ci – Ki ) + 26 kalau hasil pengurangan
Ci dengan
Ki minus
Dimana:
Ci = nilai desimal karakter ciphertext ke-i
Pi = nilai desimal karakter plaintext ke-i
Ki = nilai desimal karakter kunci ke-i
Nilai desimal karakter:
A=0 B=1 C=2 ... Z=25
Sebagai contoh, jika plaintext adalah
STIKOMBALI dan kunci adalah
KAMPUS maka proses enkripsi yang terjadi adalah sebagai berikut:
Plaintext: |
STIKOMBALI |
Key: |
KAMPUSKAMP |
Ciphertext: |
CTUZIELAXX |
Pada contoh diatas kata kunci
KAMPUS diulang sedemikian rupa
hingga panjang kunci sama dengan panjang plainteksnya. Jika dihitung
dengan rumus enkripsi vigenere plainteks huruf pertama
S (yang memiliki nilai
Pi=18) akan dilakukan pergeseran dengan huruf
K (yang memiliki
Ki=10) maka prosesnya sebagai berikut:
Ci = ( Pi + Ki ) mod 26
= (18 + 10) mod 26
= 28 mod 26
= 2
Ci=2 maka huruf ciphertext dengan nilai
2 adalah
C
. Begitu seterusnya dilakukan pergeseran sesuai dengan kunci pada
setiap huruf hingga semua plainteks telah terenkripsi menjadi
ciphertext. Setelah semua huruf terenkripsi maka proses dekripsinya
dapat dihitung sebagai berikut:
Pi = ( Ci – Ki ) + 26
= ( 2 – 10 ) + 26
= –8 + 26
= 18
Pi=18 maka huruf plainteks dengan nilai
18 adalah
S.
Begitu seterusnya dilakukan pergeseran sesuai dengan kunci pada setiap
huruf hingga semua ciphertext telah terdekripsi menjadi plainteks.
Berikut akan saya bagikan contoh program sederhana Enkripsi dan Dekripsi dengan metode Vigenere Chiper menggunakan visual studio .NET 2008.
>>Silahkan Download SourceCodenya<<
sumber :
Wikipedia,
wikipedia