发新话题
打印

[原创]维吉尼亚加密算法(C语言)

[原创]维吉尼亚加密算法(C语言)

#include<stdio.h>
#include<string.h>
void MtoC(char m[50],char k[10],char c[50])
{
   int m1[50],k1[10],c1[50],i,j;
   for(i=0;i<strlen(k);i++)
      k1=k-'a';
   for(j=0;j<strlen(m);j++)
   {
      m1[j]=m[j]-'a';
      c1[j]=(m1[j]+k1[j%strlen(k)])%26;
      c[j]=c1[j]+'a';
      printf("%c------%cn",m[j],c[j]);
   }
}
void CtoM(char c[50],char k[10],char m[50])
{
   int m1[50],k1[10],c1[50],i,j;
   for(i=0;i<strlen(k);i++)
      k1=k-'a';
   for(j=0;j<strlen(m);j++)
   {
      c1[j]=c[j]-'a';
      m1[j]=(c1[j]-k1[j%strlen(k)]+26)%26;
      m[j]=m1[j]+'a';
      printf("%c------%cn",c[j],m[j]);
   }
}
int main(void)
{
  int i,j;
  char m[50], k[10], c[50],t[50];
  printf("输入明文:");
        gets(t);
        j=0;
        for(i=0;t!='';i++){
        if(t<='Z'&&t>='A'){
        m[j]=t+32;
        j++;
        }
        else if(t<='z'&&t>='a'){
        m[j]=t;
        j++;
        }
           }
    m[j]='';

  printf("输入密钥:");
  scanf("%s",k);
  printf("明文转换为密文:n");
  MtoC(m,k,c);
  printf("密文转换为明文:n");
  CtoM(c,k,m);
}

附件

1.png (11.11 KB)

2011-4-21 08:42

运行结果

1.png

TOP

发新话题