WELLCOME TO "SCYPZONE"

Minggu, 27 April 2014

Vigenere cipher menggunakan bahasa C dengan input file.

Vigenere cipher menggunakan bahasa C.

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".(Wikipedia)

 Blaise de Vigenère


Intinya gampang kok, sama seperti cesar cipher yg di tambah varieble K untuk cipher textnya. Vigenere menggunakan Key yang di increment sepanjang plain text.

C_i \equiv (P_i + K_i) \mod 26

atau C = P + K kalau jumlah dibawah 26 & - 26 kalau hasil jumlah di atas 26

 Misal:

P=UNIVERSITAS

K=NIAM

 Maka K di increment sepanjang P.

K=NIAMNIAMNIA

Setiap karakter di P pada urutan ke i di tambah karakter di K pada urutan ke i pula. dan dimodulo 26.

C= HVIHRZSUGIS

dan dekripsi,

P_i \equiv (C_i - K_i) \mod 26

atau P = C - K kalau hasilnya positif & + 26 kalau hasil pengurangan minus

Keterangan: C_i adalah huruf ke-i pada teks tersandi, P_i adalah huruf ke-i pada teks terang, K_i adalah huruf ke-i pada kata kunci, dan mod adalah operasi modulus (sisa pembagian).

 

PROGRAM

  1. Pada folder project anda buatlah 3 file txt. "Plain.txt",untuk menampung Plain text yg akan di enkripsi,  "Cipher.txt",untuk menampung Cipher text hasil enkripsi dari Plain.txt,"Plain2.txt",untuk menampung Plain text hasil dari dekripsi Cipher.txt.
  2.  Misalkan, Isi Plain.txt dengan "vigenere cipher".
  3. Membuat menu program utama.
  4.  Membuat fungsi ChartoInt untuk mengubah Karakter(a-z) menjadi bilangan integer(0-25).
     kurang lebih seperti ini fungsinya. silahkan dilanjut sendiri sampai karakter z dengan nilai 25.
  5.  Membuat fungsi InttoChar untuk mengubah bilangan integer(0-25) menjadi Karakter(a-z).
     
    yang ini juga silahkan dilanjut sendiri..... :)
  6. Membuat fungsi IsSimbol untuk menentukan apakah karakter yang di baca bukan merupakan abjad.
  7. Membuat prosedur Enkripsi()
    intinya, file plain.txt di baca, kemudian scaning key dan di tampung di variable 'key'. program membaca file plain.txt sampai EOF(End Of File) dan karakternya disimpan dalam array plain.kemudian melakukan penyamaan panjang karakter antara plain dan key didalam sebuah perulangan sekaligus menambahkan value dari karakternya(ChartoInt) yang kemudian di konversi ke karakter(InttoChar) dan dimasukkan ke file2 yaitu cipher.txt
  8. Prosedur Dekripsi()
    proses hampir sama seperti enkripsi, yang membedakan cuma proses pengurangan nya.
     
 Silahkan dicoba sendiri untuk mengetahui output program ini.

Apabila masih kurang jelas silahkan download sourcecode lengkapnya disini

Semoga apa yang saya bagikan dapat bermanfaat bagi kita semua. bila ada pertanyaan silahkan di ajukan di komentar.
Wassalamualaikum wr. wb.

Tidak ada komentar:

Posting Komentar