Kategoriler
En Yeni
Popüler

Vigenere Şifreleme Programı (C Dilinde)

Teorik olarak öğrendiğimiz ve karşılaştığımız vigenere şifrelemesini koda dökmek istersek karşımıza bu algoritma çıkmaktadır. Kodlarla ilgili açıklamalar kodun içerisine yorum olarak eklenmiştir

#include <stdio.h>

void sifrele (void);
void sifrecoz(void);

char alfabe[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char tablo[27][27]={0}; // Vigenere tablomuz.

int main(){

int i,j,k;
int tercih;

for(i=0;i<26;i++){ // i her bir satırın numarası.
for(j=0;j<(27-i);j++){ // j ise satırdaki her harf, satır sonu NULL ile bitmeli
tablo[i][j]=alfabe[i+j]; // bu yüzden j döngüsü 27 kere dönüyor ve alfabenin NULL 
// karakterini de satırın sonuna ekliyor. 
if((i+j)==26){ // Karakterin sonuna alfabenin başındaki harfleri eklemek için
for(k=0;k<i;k++) // örneğin CDEF diye giderken Z ye ulaşınca kalan kısımları ABCD diye
tablo[i][j+k]=alfabe[k]; // doldurmalıyız. Bu döngü kalan kısımları dolduruyor.
}
}
}

printf("Sifrelemek icin 1, Sifre cozmek icin 2 girin :");
scanf("%d",&tercih);

if(tercih==1) sifrele();
else if(tercih==2) sifrecoz();
else printf("Hatali Tercih !\n");

getch(); 

return 0;
}

void sifrele(void){

int i;
char yazi[256]={0};
char anahtar[256]={0};
char sonuc[256]={0};

printf("Sifrelenecek Yaziyi Girin :");
scanf("%s",yazi);
printf("Anahtar Kelimeyi girin :");
scanf("%s",anahtar);

for(i=0;i<strlen(yazi);i++)
if(isalpha(yazi[i])==0 || isalpha(anahtar[i])==0){
printf("Girdigin yazi harf disinda karakterler iceriyor !\n");
return;
}
else {
yazi[i]=toupper(yazi[i]);
anahtar[i]=toupper(anahtar[i]);
}

for(i=0;i<strlen(yazi);i++){
int j,k;
j=yazi[i]-65;
k=anahtar[i]-65;
sonuc[i]= tablo[j][k];
}

printf("Sonuc : %s",sonuc);
}

////////////////////////////

void sifrecoz(void){

int i;
char yazi[256]={0};
char anahtar[256]={0};
char sonuc[256]={0};

printf("Cozulecek Yaziyi Girin :");
scanf("%s",yazi);
printf("Anahtar Kelimeyi girin :");
scanf("%s",anahtar);

for(i=0;i<strlen(yazi);i++)
if(isalpha(yazi[i])==0 || isalpha(anahtar[i])==0){
printf("Girdigin yazi harf disinda karakterler iceriyor !\n");
return;
}
else {
yazi[i]=toupper(yazi[i]);
anahtar[i]=toupper(anahtar[i]);
}

for(i=0;i<strlen(yazi);i++){
int j,k,l;
j=yazi[i]-65;
k=anahtar[i]-65; 

for(l=0;l<(27-i);l++)
if(tablo[k][l]==yazi[i])
sonuc[i]=tablo[0][l];

}

printf("sonuc %s",sonuc);
}

 

Discussion — Cevap Yok

Bir Cevap Yazın