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

📄 111.txt

📁 Vigenere的C++算法源代码,呵呵..大家可以随便下载哦...不过里面没有 密钥算法哦
💻 TXT
字号:
#include<stdio.h>
#include<ctype.h>
#include<string.h> 

static char table[26][26]; 

void cryption(char *,char *,char (*table)[26],int,int);
void decryption(char *,char *,char (*table)[26],int,int); 

void main()
{
 char cho,choo;
 int rot;
    char key[256],plaintext[256];
    int i,j,k_len,p_len; 

    //table[0][0]='A'; 

    for(i=0;i<26;i++)
    {
        table[i][0]=i+65;
    } 

    for(i=0;i<26;i++)
    {
        for(j=1;j<26;j++)
     {
            table[i][j]=(i+j)%26+65;
     }
    } 

 for(i=0;i<26;i++)
 {
  for(j=0;j<26;j++)
  {
   printf("%c,",table[i][j]);
  }
  printf("\n");
 } 


    //if((fp=fopen(filename,"r+"))==NULL)
    //{
    //    printf("\nCan not open file!\n");
    //}
 rot=1;
 while(rot)
 { 

  printf("Encryption or Decryption?(E/D):");
  cho=getchar();
  getchar(); 

  printf("\nInput key:");
  gets(key);
  puts(key); 

  printf("\nInput plaintext:");
  gets(plaintext);
  puts(plaintext); 

  k_len=strlen(key);
  p_len=strlen(plaintext); 

  //plaintext=(char *)malloc(sizeof(char)*k_len); 

  //fgets(plaintext,k_len+1,fp);
  if(cho=='e')
  {
   cryption(plaintext,key,table,p_len,k_len);
  }
  if(cho=='d')
  {
   decryption(plaintext,key,table,p_len,k_len);
  }
  printf("\n");
  for(i=0;i<p_len;i++)
  {
   printf("%c",plaintext[i]);
  }
  printf("\nQuit or Continue?(Q/C):");
  scanf("%c",&choo);
  getchar();
  if(choo=='Q')
   rot=0;
 }
} 

void cryption(char * plaintext,char * key,char table[][26],int p_len,int k_len)
{
    
    int i,j,row,col;
 j=0;
 while(j<p_len)
 {
  for(i=0;i<k_len;i++)
  {
   if(!isspace(plaintext[j]))
      {
    col=tolower(plaintext[j])-97;
    row=tolower(key[i])-97;
    //printf("%d,%d ",row,col);
    plaintext[j]=table[row][col];
      }
   else
   {
    i--;
   }
   j++;
  }
 }
    //fputs(plaintext,fp);
} 

void decryption(char * ciphertext,char * key,char table[26][26],int c_len,int k_len)
{
 int i,j,row,k;
 char col_ch;
 j=0;
 while(j<c_len)
 {
  for(i=0;i<k_len;i++)
  {
   if(((int)ciphertext[j])!=32)
      {
    col_ch=toupper(ciphertext[j]);
    row=tolower(key[i])-97;
    //k=col_ch-row;
    k=0;
    while(table[row][k]!=col_ch)
    {
     k++;
    }
    //printf("%d,%d ",row,k);
    ciphertext[j]=k+97;
      }
   else
   {
    i--;
   }
   j++;
  }
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -