Sandi Vigenère: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
Bot5958 (bicara | kontrib)
k Perbaikan untuk PW:CW (Fokus: Elemen gaya teks HTML <b> (bold))
 
(11 revisi perantara oleh 9 pengguna tidak ditampilkan)
Baris 1:
{{tanpa referensi}}
 
[[Berkas:Vigenere.jpg|rightka|thumbnailjmpl|Sandi Vigenère dinamai untuk menghormati Blaise de Vigenère (gambar), sekalipun [[Giovan Batista Belaso]] menemukannya sebelum Vigenère.]]
'''Sandi Vigenère''' adalah metode [[enkripsi|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 [[kriptoanalisis|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]] [[PerancisPrancis]] [[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 ==
[[Berkas:Vigenere-square.png|rightka|thumbnailjmpl|320px|Tabel Vigenère, atau ''[[tabula recta]]'', dapat digunakan untuk [[enkripsi]] maupun [[dekripsi]] sandi Vigenère.]]
 
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, <ttcode>A</ttcode> menjadi <ttcode>D</ttcode>, <ttcode>B</ttcode> menjadi <ttcode>E</ttcode> 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]] ([http://upload.wikimedia.org/wikipedia/commons/c/c7/Vigenere-square.png 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
Baris 15:
Misalnya, [[teks terang]] yang hendak disandikan adalah perintah "Serbu Berlin":
 
:<ttcode>serbuberlin</ttcode>
Sedangkan kata kunci antara pengirim dan tujuan adalah "Pizza"
:"<ttcode>PIZZA</ttcode>" diulang sehingga jumlah hurufnya sama banyak dengan teks terang:
:<ttcode>PIZZAPIZZAP</ttcode>
Huruf pertama pada teks terang, <ttcode>S</ttcode>, disandikan dengan menggunakan baris berjudul <ttcode>P</ttcode>, huruf pertama pada kata kunci. Pada baris <ttcode>P</ttcode> dan kolom <ttcode>S</ttcode> di tabel Vigenère, terdapat huruf <ttcode>H</ttcode>. Demikian pula untuk huruf kedua, digunakan huruf yang terletak pada baris <ttcode>I</ttcode> (huruf kedua kata kunci) dan kolom <ttcode>E</ttcode> (huruf kedua teks terang), yaitu huruf <ttcode>M</ttcode>. Proses ini dijalankan terus sehingga
{|
| Teks terang: || <ttcode>serbuberlin</ttcode>
|-
| Kata kunci: || <ttcode>PIZZAPIZZAP</ttcode>
|-
| Teks bersandi: || <ttcode>HMQAUQMQKIC</ttcode>
|}
 
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 <ttcode>H</ttcode> (huruf pertama teks tersandi) pada baris <ttcode>P</ttcode> (huruf pertama pada kata kunci), yang terdapat pada kolom <ttcode>S</ttcode>, sehingga huruf pertama adalah <ttcode>S</ttcode>. Lalu <ttcode>M</ttcode> terdapat pada baris <ttcode>I</ttcode> di kolom <ttcode>E</ttcode>, sehingga diketahui huruf kedua teks terang adalah <ttcode>E</ttcode>, dan seterusnya hingga didapat perintah "<ttcode>serbuberlin</ttcode>".
 
[[Enkripsi]] (penyandian) dengan sandi Vigenère juga dapat dituliskan secara matematis, dengan menggunakan penjumlahan dan [[operasi modulus]], yaitu:
Baris 44:
Keterangan: <math>C_i</math> adalah huruf ke-i pada teks tersandi, <math>P_i</math> adalah huruf ke-i pada teks terang, <math>K_i</math> adalah huruf ke-i pada kata kunci, dan <math>mod</math> adalah [[operasi modulus]] (sisa pembagian).
 
== '''Pehitungan Sandi Vigenere''' ==
 
'''Rumus enkripsi vigenere cipher :'''
 
:<math>C_i \equiv (P_i + K_i) \mod 26</math>
Baris 54:
'''''Ci = ( Pi + Ki ) – 26''''' kalau hasil penjumlahan '''''Pi '''''dan '''''Ki''''' lebih dari 26
 
'''Rumus dekripsi vigenere cipher :'''
 
:<math>P_i \equiv (C_i - K_i) \mod 26</math>
 
'''atau'''
 
'''''Pi = ( Ci – Ki ) + 26''''' kalau hasil pengurangan '''''Ci''''' dengan '''''Ki''''' minus
 
'''Dengan:'''
<b>Dimana:<b>
 
Ci = nilai desimal karakter ciphertext ke-i
Baris 77:
 
{|
| Plaintext: || <ttcode>'''STIKOMBALI'''</ttcode>
|-
| Key: || <ttcode>'''KAMPUSKAMP'''</ttcode>
|-
| Ciphertext: || <ttcode>'''CTUZIELAXX'''</ttcode>
|}
 
Pada contoh diatas kata kunci '''KAMPUS''' diulang sedemikian rupa hingga panjang kunci sama dengan panjang plainteksnya. Jika dihitung dengan rumus enkripsi vigenere&nbsp; plainteks huruf pertama '''S''' (yang memiliki nilai '''Pi=18''') akan dilakukan pergeseran dengan huruf '''K''' (yang memiliki '''Ki=10''') maka prosesnya sebagai berikut:
 
&nbsp;<b>Ci = ( Pi + Ki ) mod 26
&nbsp;&nbsp;&nbsp; = (18 + 10) mod 26
&nbsp;&nbsp;&nbsp; = 28 mod 26