Vigenere Cipher Algoritması

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

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: ");
}
 
saol abi güzel paylaşım
bizde bi başliyabilsek şu programlamaya :D
 
Geri
Üst