0

Penerapan Vigenere cipher di pemograman C

Posted by Jujur Sitanggang on 5:59 AM
Vigenere cipher adalah salah satu jenis kriptografi klasik yang pada dasarnya adalah melakukan substitusi cipher abjad majemuk (polyalphabetic substitution), yaitu mengubah plaintext dengan kunci tertentu  biasanya berupa sebuah kata atau kalimat yang berulang sepanjang plaintext sehingga didapatkan ciphertext. Tetapi salah satu kelemahan dari cipher ini adalah ia mudah diserang dengan metode Kasiski untuk mengetahui panjang huruf yang digunakan sebagai kunci. Untuk lebih memperkuat cipher ini, banyak modifikasi dilakukan oleh para peneliti. Salah satu cara yang saya ajukan sebagai tugas makalah ini adalah Vigenere cipher dengan metode pembangkitan kunci dengan menggunakan bilangan euler. Pada dasarnya, metode ini adalah sebuah cara untuk mendapatkan suatu kunci berbentuk acak yang digenerate dari perkalian matematis antara kunci yang dimasukkan dengan bilangan Euler. Diharapkan dengan metode ini, kunci yang dihasilkan untuk Vigenere cipher menjadi lebih panjang dan acak sehingga akan menyulitkan kriptanalisis untuk menyerang dengan metode Kasiski maupun dengan analisis frekuensi.



Cara Kerja Program

Program Vigenere cipher akan mengubah plain text dengan kunci tertentu dengan kata yang  maupun kalimat yang lain melewati suatu proses perhitungan dari program Vigenere cipher. 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 table vigenere.
 

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.
Cara Pemrosesan Program
Misalnya ,plainteks yang hendak disandikan adalah perintah “Sari kaya”
            Sarikaya
Sedangkan kata kunci adalah "Roti"
“roti” akan di ulang dengan plainteks menjadi “rotiroti”
Huruf pertama pada plainteks, S, disandikan dengan menggunakan baris berjudul R, huruf pertama pada kata kunci. Pada baris R dan kolom S di tabel Vigenère, terdapat huruf J . Demikian pula untuk huruf kedua, digunakan huruf yang terletak pada baris O (huruf kedua kata kunci) dan kolom A (huruf kedua plaintext), yaitu huruf O. Proses ini dijalankan terus sehingga di peroleh hasil :
JOkQBORI

            Seperti hal itulah
vigenere cipher melakukan pemrosesan sehingga menghasilkan kata yang sulit ditebak atau di ketahui oleh orang lain.
Untuk penerapan ke program c anda dapat melihat code dibawah ini

#include<stdio.h>

void main()
{
int i;
int katakunci;
int katasandi;
printf("Masukkan panjang kata kunci : ");
scanf("%d",&katakunci);
printf("Masukkan panjang kata sandi : ");
scanf("%d",&katasandi);

char sandi[katasandi];
char kunci[katakunci];

printf("\n Masukkan kata kunci : ");
for(i=-1;i<katakunci;++i)
scanf("%c",&kunci[i]);

printf("\n Masukkan Kata Sandi : ");
for(i=-1;i<katasandi;++i)
scanf("%c",&sandi[i]);

int x[3][katasandi];

for(i=0;i<katasandi;++i)
{
if(65<=sandi[i] && sandi[i]<=91)
x[0][i]=sandi[i]%65;
else
x[0][i]=sandi[i]%97;
}

int count=0;
while(count<katasandi)
{
for(i=0;i<katakunci;++i)
{
if(65<=kunci[i] && kunci[i]<=91)
x[1][count+i]=kunci[i]%65;
else
x[1][count+i]=kunci[i]%97;
}
count=count+katakunci;
}

printf("\n\nHasil Enkripsi adalah: ");
char cipher[katakunci];
for(i=0;i<katasandi;++i)
{
x[2][i]=(x[0][i]+x[1][i])%26;
cipher[i]=(char)(x[2][i]+65);
printf("%c ",cipher[i]);
}

}

 


0 Comments

Copyright Jujur Soaloon Sitangang Lipan All rights reserved. Theme by Sitanggang. | Bloggerized by Soalparna.