#include <stdio.h>
#include <math.h>
int main(){
int i=0;
char w;
char znak[80];
int key,key1,o,b,ap,k,z;
int abs(int abs);
char c,e,d,a;
printf ("wybierz opcje szyfr_Cezar - 1 , odszyf_Cezar - 2, szyfr_afiniczny - 3, deszyfr_afiniczny - 4 \n");
scanf ("%s",&w);
if('c'){
if('e'){
FILE * f = fopen("key.txt", "r");
fscanf(f,"%d",&key);
fclose(f);
FILE *p=fopen("plain", "r"); //czyta z pliku tekst jawny
z = getc(p);
for(i=0;(i<80)&&(feof(p)==0) && (z != '\n'); i++)
{ znak[i] = z;
z = getc(p);
}
fclose(p);
printf("Kody: \n");
for(i=0; i<11; i++)
{
printf ("%d \t", znak[i]);
printf ("\n");
}
printf ("\nSzyfrowanie : \n");
for(i=0; i<11; i++)
{
if((znak[i]>=65)&&(znak[i]<90))
{
znak[i]-=65;
znak[i]+=key;
znak[i]=znak[i]%26;
znak[i]+=65;
}
else if((znak[i]>=97)&&(znak[i]<=122))
{
znak[i]-=97;
znak[i]+=key;
znak[i]=(znak[i]%26);
znak[i]+=97;
}
else if ((znak[i]>=48)&&(znak[i]<=57))
{
znak[i]-=48;
znak[i]+=key;
znak[i]=(znak[i]%10);
znak[i]+=48;
}
printf ("%d ", znak[i]);
}
printf ("\nZamiana na litery\n");
FILE *out;
out = fopen("crypto.txt","w+t");
for(i=0; i<11; i++)
{
z=znak[i];
printf (" \n ");
printf ("%d = %c\n",znak[i], z);
fprintf(out,"%c", z);
}
fclose(out);
}}
if('c'){
if('d'){
FILE * f = fopen("key.txt", "r");
fscanf(f,"%d",&key);
fclose(f);
FILE *q=fopen("crypto.txt", "r"); //czyta z pliku tekst jawny
z = getc(q);
for(i=0;(i<80)&&(feof(q)==0) && (z != '\n'); i++)
{ znak[i] = z;
z = getc(q);
}
fclose(q);
printf ("\nOdszyfrowywanie : \n");
for(i=0; i<11; i++){
if((znak[i]>=65)&&(znak[i]<90))
{
znak[i]-=65;
znak[i]-=key;
if(znak[i]<0)
znak[i]=26-abs(znak[i]);
znak[i]+=65;
}
else if((znak[i]>=97)&&(znak[i]<=122))
{
znak[i]-=97;
znak[i]-=key;
if(znak[i]<0)
znak[i]=26-abs(znak[i]);
znak[i]+=97;
}
else if ((znak[i]>=48)&&(znak[i]<=57))
{
znak[i]-=48;
znak[i]-=key;
if(znak[i]<0)
znak[i]=10-abs(znak[i]);
znak[i]+=48;
}
printf("%d\n",znak[i]);
}
printf ("\nZamiana na litery\n");
FILE *d;
d = fopen("decrypt.txt","w+t");
for(i=0; i<11; i++)
{
z=znak[i];
printf (" \n ");
printf ("%d = %c\n",znak[i], z);
fprintf(d,"%c", z);
}
fclose(d);
}}
if('a'){
if('e'){
FILE * f = fopen("key.txt", "r");
fscanf(f,"%d",&key);
fscanf(f,"%d",&key1);
fclose(f);
FILE *p=fopen("plain", "r"); //czyta z pliku tekst jawny
z = getc(p);
for(i=0;(i<80)&&(feof(p)==0) && (z != '\n'); i++)
{ znak[i] = z;
z = getc(p);
}
fclose(p);
printf("Kody: \n");
for(i=0; i<11; i++)
{
printf ("%d \t", znak[i]);
printf ("\n");
}
printf ("\nSzyfrowanie : \n");
for(i=0; i<11; i++)
{
if((znak[i]>=65)&&(znak[i]<90))
{
znak[i]-=65;
znak[i]*=key;
znak[i]+=key1;
znak[i]=znak[i]%26;
znak[i]+=65;
}
else if((znak[i]>=97)&&(znak[i]<=122))
{
znak[i]-=97;
znak[i]*=key;
znak[i]+=key1;
znak[i]=znak[i]%26;
znak[i]+=97;
}
else if ((znak[i]>=48)&&(znak[i]<=57))
{
znak[i]-=48;
znak[i]*=key;
znak[i]+=key1;
znak[i]=znak[i]%10;
znak[i]+=48;
}
}
printf ("\nZamiana na litery\n");
FILE *out;
out = fopen("crypto.txt","w+t");
for(i=0; i<11; i++)
{
z=znak[i];
printf (" \n ");
printf ("%d = %c\n",znak[i], z);
fprintf(out,"%c", z);
}
fclose(out);
}}
if('a'){
if('d'){
FILE * f = fopen("key.txt", "r");
fscanf(f,"%d",&key);
fscanf(f,"%d",&key1);
fclose(f);
FILE *q=fopen("crypto.txt", "r"); //czyta z pliku tekst jawny
c = getc(q);
for(i=0;(i<80)&&(feof(q)==0) && (z != '\n'); i++)
{ znak[i] = z;
z = getc(q);
}
fclose(q);
int wynik;
k=key;
int ap=0;
while (wynik!=1){ //NWD
ap=ap+1;
wynik=(ap*k)%26;
printf ("%d\n",wynik);
}
printf("Kody: \n");
for(i=0; i<11; i++)
{
printf ("%d \t", znak[i]);
printf ("\n");
}
printf ("\nSzyfrowanie : \n");
for(i=0; i<11; i++)
{
if((znak[i]>=65)&&(znak[i]<90))
{
znak[i]-=65;
znak[i]=(znak[i]*(-1)*wynik);
znak[i]*=key1;
znak[i]*=wynik;
znak[i]=znak[i]%26;
znak[i]+=65;
}
else if((znak[i]>=97)&&(znak[i]<=122))
{
znak[i]-=97;
znak[i]=(znak[i]*(-1)*wynik);
znak[i]*=key1;
znak[i]*=wynik;
znak[i]=znak[i]%26;
znak[i]+=97;
}
else if ((znak[i]>=48)&&(znak[i]<=57))
{
znak[i]-=48;
znak[i]=(znak[i]*(-1)*wynik);
znak[i]*=key1;
znak[i]*=wynik;
znak[i]=znak[i]%10;
znak[i]+=48;
}
}
printf ("\nZamiana na litery\n");
FILE *d;
d = fopen("decrypt.txt","w+t");
for(i=0; i<11; i++)
{
z=znak[i];
printf (" \n ");
printf ("%d = %c\n",znak[i], z);
fprintf(d,"%c", z);
}
fclose(d);
}
}
return 0;
}