WiLdBoY
Altın Üye
- Katılım
- 18 Haz 2005
- Mesajlar
- 807
- Reaction score
- 0
- Puanları
- 0
- Yaş
- 37
Vigenere Cipher algoritması kullanarak yazmış olduğum bir tür şifreleme programı. İster dosyayı ister mesajınızı şifreleyin veya çözün.
Vigenere Cipher algoritmasının nasıl olduğunu merak edenler şu anlatımdan bakabilirler.
http://www.mutasyon.net/makaleoku.asp?id=799
Vigenere Cipher algoritmasının nasıl olduğunu merak edenler şu anlatımdan bakabilirler.
http://www.mutasyon.net/makaleoku.asp?id=799
Kod:
//code:W
#include <stdio.h>
#include <ctype.h>
#include <string.h>
char sifrele(char, char);
char sifreCoz(char, char);
char *strSifrele(char[], char[]);
char *strSifreCoz(char[], char[]);
void buyukYap(char[]);
void menuYaz();
void mesajSifrele();
void mesajCoz();
void dosyaSifrele();
void dosyaSifreCoz();
int main()
{
int sec;
do
{
menuYaz();
scanf("%d",&sec);
switch(sec)
{
case 1:
mesajSifrele();
break;
case 2:
mesajCoz();
break;
case 3:
dosyaSifrele();
break;
case 4:
dosyaSifreCoz();
break;
}
}while(sec!=0);
return 0;
}
char sifrele(char c1, char c2)
{
char x;
if (c1-65+c2 > 90)
x=c2-(26-(c1-65));
else
x=c2+(c1-65);
return x;
}
char sifreCoz(char c1, char c2)
{
char x;
if (c1-c2 < 0)
x=91+c1-c2;
else
x=65+c1-c2;
return x;
}
char *strSifrele(char str[], char key[])
{
char tekrarli[100];
char kod[100];
char encoded[100];
int i,y,yer=0,anh=0;
buyukYap(str);
buyukYap(key);
while(str[yer]!='\0') yer++;
for (i=0;i<yer;i++)
{
if (key[anh] == '\0')
anh=0;
tekrarli[i]=key[anh++];
}
tekrarli[i]='\0';
for (y=0;str[y]!='\0';y++)
kod[y]=sifrele(str[y],tekrarli[y]);
kod[y]='\0';
strcpy(encoded,kod);
return encoded;
}
char *strSifreCoz(char str[], char key[])
{
char tekrarli[100];
char kod[100];
char decoded[100];
int i,y,yer=0,anh=0;
buyukYap(key);
while(str[yer]!='\0') yer++;
for (i=0;i<yer;i++)
{
if (key[anh] == '\0')
anh=0;
tekrarli[i]=key[anh++];
}
tekrarli[i]='\0';
for (y=0;str[y]!='\0';y++)
kod[y]=sifreCoz(str[y],tekrarli[y]);
kod[y]='\0';
strcpy(decoded,kod);
return decoded;
}
void mesajSifrele()
{
char str[100];
char anahtar[50];
char kod[100];
printf("\nSifrelenecek cumleyi girin: ");
getchar();
gets(str);
printf("Anahtari girin: ");
scanf("%s",anahtar);
strcpy(kod,strSifrele(str,anahtar));
printf("Mesaj Sifrelendi..\n");
printf("\nSifrelenmis Hali -> %s\n",kod);
}
void mesajCoz()
{
char str[100];
char anahtar[50];
char kod[100];
printf("\nSifrelenmis cumleyi girin: ");
getchar();
gets(str);
printf("Anahtari girin: ");
scanf("%s",anahtar);
strcpy(kod,strSifreCoz(str,anahtar));
printf("Mesaj Sifresi Cozuldu\n");
printf("\nMesaj -> %s\n",kod);
}
void dosyaSifrele()
{
FILE *fin,*fout;
char str[100];
char in[20], out[20];
char anahtar[50];
char kod[100];
int i;
printf("\nSifrelenecek dosyanin ismini girin: ");
getchar();
gets(in);
printf("Sifreli dosya hangi isimle kaydedilsin: ");
gets(out);
printf("Anahtari girin: ");
scanf("%s",anahtar);
fin=fopen(in,"r");
fout=fopen(out,"w");
if (fin == NULL)
printf("Girdiginiz dosya acilamadi!!!\n");
else {
for (i=0;!feof(fin);i++)
str[i]=getc(fin);
str[i]='\0';
strcpy(kod,strSifrele(str,anahtar));
fprintf(fout,"%s",kod);
}
printf("\n%s dosyasi sifrelendi ve %s dosyasina yazildi...\n",in,out);
fclose(fin);
fclose(fout);
}
void dosyaSifreCoz()
{
FILE *fin;
char str[100];
char in[20];
char anahtar[50];
char kod[100];
int i;
printf("\nSifresi cozulecek dosyanin ismini girin: ");
getchar();
gets(in);
printf("Anahtari girin: ");
scanf("%s",anahtar);
fin=fopen(in,"r");
if (fin == NULL)
printf("Girdiginiz dosya acilamadi!!!\n");
else {
for (i=0;!feof(fin);i++)
str[i]=getc(fin);
str[i]='\0';
strcpy(kod,strSifreCoz(str,anahtar));
}
printf("\n%s dosyasinin sifresi cozuldu...\n",in);
printf("\n%s\n",kod);
fclose(fin);
}
void buyukYap(char str[])
{
for (int i=0;str[i]!='\0';i++)
str[i]=toupper(str[i]);
}
void menuYaz()
{
printf("\n*** Vigenere Cipher Kriptoloji Algoritmasi ***\n");
printf("\n[1] Mesaj Sifrele\n");
printf("[2] Mesaj Sifresi Coz\n");
printf("[3] Dosya Sifrele\n");
printf("[4] Sifreli Dosyayi Coz\n");
printf("\n[0] Cikis\n");
printf("\nSeciminiz: ");
}