📄 vigenere.cpp
字号:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{
char c1[26],c2[26][26],str[100],k[26];
int i,j,d,len,l[26],m;
for(i=0;i<26;i++)
c1[i]=i+65;
for(i=0;i<26;i++)
for(j=0;j<26;j++)
c2[i][j]=(i+j)%26+65;
printf("\n\n\t\t\t欢迎使用Vigenere密码系统:\n\n");
printf("\n\n-------加密请输入1\t解密请输入2\t退出系统请输入0------");
do{
printf("\n\n请选择:");
scanf("%d",&d);
switch(d)
{
case 1:
{
printf("\n请输入密钥:");
scanf("%s",k);
len=strlen(k);
strupr(k);
for(i=0;i<len;i++)
for(j=0;j<26;j++)
if(k[i]==c1[j])l[i]=j;
printf("\n请输入明文:");
scanf("%s",str);
strupr(str);
printf("\n密文为:");
for(i=0;str[i]!='\0';i++)
for(j=0;j<26;j++)
if(str[i]==c1[j])
{
m=i%len;
printf("%c",c2[l[m]][j]);
if(i!=0&&m==(len-1))printf(" ");
break;
}
break;
}
case 2:
{
printf("\n请输入密钥:");
scanf("%s",k);
len=strlen(k);
strupr(k);
for(i=0;i<len;i++)
for(j=0;j<26;j++)
if(k[i]==c1[j])l[i]=j;
printf("\n输入密文:");
scanf("%s",str);
strupr(str);
printf("\n明文为:");
for(i=0;i<str[i]!='\0';i++)
for(j=0;j<26;j++)
{
m=i%len;
if(str[i]==c2[l[m]][j])
{
printf("%c",c1[j]+32);
break;
}
}
break;
}
case 0:
exit(0);
default:printf("\n请重新输入:\n");
}
}while(d);
printf("\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -