#include
#include
#include
void Encry()
{
char key[100];
char ch,temp;
int L,i=0,j=0;
if(getchar()=='\n')
temp=' ';
printf("请输入密钥: ");
gets(key);
L=strlen(key);
printf("输入明文: ");
while((ch=getchar())!='\n')
{
if(ch==' ')
{
i++;
continue;
}
if(ch>='a'&&ch<='z')
{
printf("%c",(ch+key[j%L]-'a'-'a')%26+'A');
j++;
}
if(ch>='A'&&ch<='Z')
{
printf("%c",(ch+key[j%L]-'A'-'a')%26+'A');
j++;
}
if(j%L==0)
printf(" ");
i++;
}
putchar(ch);
}
void Decry()
{
char key[100];
char ch,temp;
int L,i=0,j=0;
if(getchar()=='\n')
temp=' ';
printf("请输入密钥: ");
gets(key);
L=strlen(key);
printf("输入密文: ");
while((ch=getchar())!='\n')
{
if(ch==' ')
{
i++;
continue;
}
if(ch>='A'&&ch<='Z')
{
printf("%c",(ch-key[j%L]-'A'+'a'+26)%26+'a');
j++;
}
if(j%L==0)
printf(" ");
i++;
}
putchar(ch);
}
int Exit()
{
exit(0);
}
int main()
{
char ch;
for(;;)
{
printf("请输入你的操作(e/E 加密;d/D 解密;q/Q 退出):");
ch=getchar();
if(ch=='e'||ch=='E')
Encry();
else if(ch=='d'||ch=='D')
Decry();
else if(ch=='q'||ch=='Q')
Exit();
else
{
printf("输入命令错误!");
putchar(getchar());
continue;
}
}
return 0;
}