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;
}