⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vigenere.cpp

📁 这是一个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 + -