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

📄 维吉尼亚密码的c语言源代码.txt

📁 自己编的一个维吉尼亚密码的C语言源代码
💻 TXT
字号:
 设m表示明文序列,k表示密钥序列,c表示加密后的密文序列,d表示密钥长度,q表示明文/密文空间元素个数,则维吉尼亚密码可以描述为

     ci+td=(mi+td+ki) mod q    (i=0,1,2,...,d-1)

      偶然从书上看到这个式子,想了一下,写了下面的代码,不一定正确,算作交流吧。

#i nclude <ctype.h>
#i nclude <conio.h>

void crypt(char m[],char k[],char r[])
{
   int i,j,s=0;
   j=strlen(k);
   for(i=0;m[i];i++)
      m[i]=tolower(m[i]);
   for(i=0;m[i];i++)
      if(isalpha(m[i]))
      {
           r[i]=(m[i]-'a'+k[s%j]-'a')%26+'a';
           s++;/*s用来跳过明文中的空格字符*/
      }
      else
           r[i]=m[i];
   r[i]=0;/*密文字符串结束符*/
   for(i=0;r[i];i++)
      r[i]=toupper(r[i]);
}

void decrypt(char c[],char k[],char m[])
{
   int i,j,s=0;
   j=strlen(k);
   for(i=0;c[i];i++)
      c[i]=tolower(c[i]);
   for(i=0;c[i];i++)
      if(isalpha(c[i]))
      {
          m[i]=(c[i]-k[s%j]+26)%26+'a';
          s++;
      }
      else
          m[i]=c[i];
   m[i]=0;
}

void main()
{
    char m[]="welcome to my blog.i am bugeyes.";
    char k[]="bugeyeswuyan";
    char c[80];
    char d[80];
    clrscr();
    crypt(m,k,c);
    decrypt(c,k,d);
    puts(m);
    puts(k);
    puts(c);
    puts(d);
}

⌨️ 快捷键说明

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