-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvignereCipher.c
102 lines (98 loc) · 2.75 KB
/
vignereCipher.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include<stdio.h>
#include<string.h>
char sletters[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char cletters[] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
void encrypt() {
char msg[256], enc[256],key[256];
int key_len,i,j,x,y;
printf("\nEnter plaintext (w/o spaces) : ");
scanf("%s", &msg);
printf("\nEnter key (w/o spaces) : ");
scanf("%s", &key);
key_len=strlen(key);
if(key_len<256) {
for(i=key_len,j=0;i<strlen(msg);i++,j++)
key[i]=key[j];
}
for(i=0;i<strlen(msg);i++)
key[i]=tolower(key[i]);
for(i=0;i<strlen(msg); i++) {
if(msg[i]>=97 && msg[i]<=122){
for(j=0;j<26;j++) {
if(sletters[j]==msg[i])
x=j;
if(sletters[j]==key[i])
y=j;
}
enc[i]=sletters[((x+y)%26)];
}
else if(msg[i]>=65 && msg[i]<=90) {
for(j=0;j<26;j++) {
if(cletters[j]==msg[i])
x=j;
if(sletters[j]==key[i])
y=j;
}
enc[i]=cletters[((x+y)%26)];
}
else {
enc[i]=msg[i];
}
}
enc[i]='\0';
printf("\nCiphertext : %s", enc);
}
void decrypt() {
char enc[256], dec[256],key[256];
int key_len,i,j,x,y;
printf("\nEnter ciphertext (w/o spaces) : ");
scanf("%s", &enc);
printf("\nEnter key (w/o spaces) : ");
scanf("%s", &key);
key_len=strlen(key);
if(key_len<256) {
for(i=key_len,j=0;i<strlen(enc);i++,j++)
key[i]=key[j];
}
for(i=0;i<strlen(enc);i++)
key[i]=tolower(key[i]);
for(i=0;i<strlen(enc); i++) {
if(enc[i]>=97 && enc[i]<=122){
for(j=0;j<26;j++) {
if(sletters[j]==enc[i])
x=j;
if(sletters[j]==key[i])
y=j;
}
dec[i]=sletters[((x+y)%26)];
}
else if(enc[i]>=65 && enc[i]<=90) {
for(j=0;j<26;j++) {
if(cletters[j]==enc[i])
x=j;
if(sletters[j]==key[i])
y=j;
}
dec[i]=cletters[((x+y)%26)];
}
else {
dec[i]=enc[i];
}
}
dec[i]='\0';
printf("\nPlaintext : %s", dec);
}
int main() {
int ch;
printf("Menu :\n1. Encrypt\n2. Decrypt\nChoose : ");
scanf("%d", &ch);
switch(ch) {
case 1: encrypt();
break;
case 2: decrypt();
break;
default: printf("\nWrong choice\n");
break;
}
return 0;
}