📄 vigenere.cpp
字号:
#include<stdio.h>
#include"math.h"
#include"string.h"
main()
{
char m[100];
char ma[100],mb[100],mc[100],md[100];
char key[100];
printf("请输入原始明文:");
scanf("%s",&m);
printf("\n");
printf("凯撒加密后密文:");
for(int i=0;i<strlen(m);i++)
{
if(i>100)
{
printf("密文过长");
break;
}
if(m[i]>='a'&&m[i]<='w')
ma[i]=m[i]-29;
else if(m[i]>'w'&&m[i]<='z')
ma[i]=m[i]-55;
else
{printf("您输入的明文不合规范");
break;}
printf("%c",ma[i]);
}
printf("\n");
printf("凯撒解密后:");
for(int i=0;i<strlen(ma);i++)
{
if(ma[i]>='D'&&ma[i]<='Z')
mb[i]=ma[i]+29;
if(ma[i]>='A'&&ma[i]<'D')
mb[i]=ma[i]+55;
printf("%c",mb[i]);
}
printf("\n");
printf("请输入密钥:");
scanf("%s",&key);
printf("\n");
printf("密文是:");
for(int i=0;i<strlen(m);i++)
{
for(int j=0;j<strlen(key);j++)
{
if(m[i]>96&&m[i]<123)
mc[i]=(m[i]-97+key[j]-97)%26+97;
if(m[i]<96||m[i]>123||key[j]<96||key[j]>123)
{
printf("输入的字符不合规定");
break;
}
}
printf("%c",mc[i]);
}
printf("\n");
printf("解密后:");
for(int i=0;i<strlen(m);i++)
{
for(int j=0;j<strlen(key);j++)
{
if(mc[i]>96&&mc[i]<123)
{
if(mc[i]-key[j]>0)
md[i]=(mc[i]-97-(key[j]-97))%26+97;
else
md[i]=(mc[i]-97-(key[j]-97)+26)%26+97;
}
}
printf("%c",md[i]);
}
printf("\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -