📄 维吉尼亚密码的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 + -