#include<stdio.h>
#include<string.h>
int main()
{
char a1
[1000
];
char a2
[1000];
char a3
[1000];
char a4
[1000];
char b
[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int i
,h
,x
,count
=0 ,m
,m1
,t
;
int l
,l2
,lk
,lk2
,l3
,l4
;
int p
=0,j
=0,n
=0,p2
=0,n1
=0,j1
=0,c
=0,count1
=0,count2
=0;
int r
;
printf("******************************\n");
printf("维吉尼亚密码加密解密\n");
printf("******************************\n");
while(1)
{
printf(" 1:加密\n 2:解密\n 3.结束\n");
h
=scanf("%d",&x
);
if(h
==1&&x
==1)
{ fflush(stdin);
printf("请输入字母文本:\n");
while(1)
{
while(1)
{
fgets(a1
, 1005, stdin);
l3
=strlen(a1
);
if(l3
>1001)
count1
++;
else
{ break;}
if(count1
>0)
printf("输入超过范围请重新输入!\n");
fflush(stdin);
}
l
=l3
-1;
for(i
=0;i
<l
;i
++)
{
if((a1
[i
]>='a'&&a1
[i
]<='z')||(a1
[i
]>='A'&&a1
[i
]<='Z'))
{
}
else
{ count
++;
}
}
if(count
>0)
{ printf("输入错误!请重新输入!\n");
count
=0;
}
else
{
break;
}
fflush(stdin);
}
for(i
=0;i
<l
;i
++)
{
if(a1
[j
]>='A'&&a1
[j
]<='Z')
{
a1
[i
]=a1
[j
];
}
else if(a1
[j
]>='a'&&a1
[j
]<='z')
{
a1
[i
]=a1
[j
]-32;
}
j
++;
}
printf("请输入密钥(字母):\n");
while(1)
{
gets(a2
);
lk
=strlen(a2
);
for(i
=0;i
<lk
;i
++)
{
if(((a2
[i
]>='a'&&a2
[i
]<='z')||(a2
[i
]>='A'&&a2
[i
]<='Z'))&&(lk
<=1000))
{
}
else
{ p
++;}
}
if(p
>0)
{ printf("输入错误或超过输入范围!请重新输入!\n");
p
=0;
}
else
{
break;
}
fflush(stdin);
}
for(m
=0;m
<lk
;m
++)
{
if(a2
[n
]>='A'&&a2
[n
]<='Z')
{
a2
[m
]=a2
[n
];
}
else if(a2
[n
]>='a'&&a2
[n
]<='z')
{
a2
[m
]=a2
[n
]-32;
}
n
++;
}
for(i
=0;i
<l
;i
++)
{
printf("%c",b
[(a1
[i
]+a2
[i
%lk
]-65)%65]);
}
printf("\n");
fflush(stdin);
}
else if(h
==1&&x
==2)
{ fflush(stdin);
printf("请输入字母文本:\n");
while(1)
{
while(1)
{
fgets(a4
, 1005, stdin);
l4
=strlen(a4
);
if(l4
>1001)
count2
++;
else
{ break;}
if(count2
>0)
printf("输入超过范围请重新输入!\n");
fflush(stdin);
}
l2
=l4
-1;
for(i
=0;i
<l2
;i
++)
{
if(((a4
[i
]>='a'&&a4
[i
]<='z')||(a4
[i
]>='A'&&a4
[i
]<='Z'))&&(l2
<=1000))
{
}
else
{ c
++;
}
}
if(c
>0)
{ printf("输入错误或超过输入范围!请重新输入!\n");
c
=0;
}
else
{
break;
}
fflush(stdin);
}
for(i
=0;i
<l2
;i
++)
{
if(a4
[j1
]>='A'&&a4
[j1
]<='Z')
{
a4
[i
]=a4
[j1
];
}
else if(a4
[j1
]>='a'&&a4
[j1
]<='z')
{
a4
[i
]=a4
[j1
]-32;
}
j1
++;
}
printf("请输入密钥(字母):\n");
while(1)
{
gets(a3
);
lk2
=strlen(a3
);
for(i
=0;i
<lk2
;i
++)
{
if(((a3
[i
]>='a'&&a3
[i
]<='z')||(a3
[i
]>='A'&&a3
[i
]<='Z'))&&(lk2
<=1000))
{
}
else
{ p2
++;}
}
if(p2
>0)
{ printf("输入错误或超过输入范围!请重新输入!\n");
p2
=0;
}
else
{
break;
}
fflush(stdin);
}
for(m1
=0;m1
<lk2
;m1
++)
{
if(a3
[n1
]>='A'&&a3
[n1
]<='Z')
{
a3
[m1
]=a3
[n1
];
}
else if(a3
[n1
]>='a'&&a3
[n1
]<='z')
{
a3
[m1
]=a3
[n1
]-32;
}
n1
++;
}
for(i
=0;i
<l2
;i
++)
{
t
=(a4
[i
]-a3
[i
%lk2
])%26;
while(t
<0)t
+=26;
printf("%c",b
[t
]);
fflush(stdin);
}
printf("\n");
fflush(stdin);
}
else if (h
==1&&x
==3)
return 0;
else
printf("没有这个选项,请重新输入!\n");
fflush(stdin);
}
}
转载请注明原文地址: https://mac.8miu.com/read-514193.html