Vernam加密算法
A.把每个明文字母当作一个数字,如A=0,B=1,……,Z=25
B.将明文每个字母与输入密文中的相应字母相加
C.如果得到的和大于25,则进行模运算
D.将和变成相应字母,得到输出密文
其具体实现方法如下:
#include<stdio.h>
#define LEN 1000
int main(int argc, char* argv[])
{
int i;
printf("请输入您的明文长度: ");
int n;
scanf("%d",&n);
char a[LEN];
char b[LEN];
char c[LEN];
fflush(stdin);
printf("请输入您的明文: ");
for(i=0;i<n;i++)
{
scanf("%c",&a[i]);
}
for(i=0;i<n;i++)
{
a[i]=a[i]-65;
}
printf("请输入你的密钥: ");
fflush(stdin);
for(i=0;i<n;i++)
{
scanf("%c",&b[i]);
}
for(i=0;i<n;i++)
{
b[i]=b[i]-65;
}
for(i=0;i<n;i++)
{
c[i]=a[i]+b[i];
if(c[i]>25)
c[i]=c[i]%26;
}
printf("密文是:/n");
for(i=0;i<n;i++)
{
printf("%c ",c[i]+65);
}
printf("/n");
return 0;
}