资源简介
在单一恺撒密码的基础上,法国外交家布莱斯·德·维吉尼亚(Blaise de Vigenère)发明了一种方法来对同一条信息中的不同字母用不同的密码进行加密。这样,同样的E在一个位置可能被M所取代,而在另一个位置的E则有可能以K的面目出现。这样,就可以防止任何人利用频率分析法解密该条信息。
代码片段和文件信息
在单一恺撒密码的基础上,法国外交家布莱斯·德·维吉尼亚(Blaise de Vigenère)发明了一种方法来对同一条信息中的不同字母用不同的密码进行加密。这样,同样的E在一个位置可能被M所取代,而在另一个位置的E则有可能以K的面目出现。这样,就可以防止任何人利用频率分析法解密该条信息。
#include
#include
void encryption();
void decryption();
void encryption()
{
int ij;
char p[80]k[80]c[80];
printf(“请输入明文:\n“);
gets(p);
printf(“请输入密钥(范围为a-zA-Z):\n“);
gets(k);
for(i=0;k[i]!=‘\0‘;i++)
while((k[i]<‘a‘||k[i]>‘z‘)&&(k[i]<‘A‘||k[i]>‘Z‘))
{
printf(“您的输入有误,请重新输入密钥:\n“);
gets(k);
}
for(i=0j=0;p[i]!=‘\0‘&&k[j]!=‘\0‘;i++j++)
if((p[i]<‘a‘||p[i]>‘z‘)&&(p[i]<‘A‘||p[i]>‘Z‘))
{
c[i]=p[i];
}
else
{
if(p[i]>=‘A‘&&p[i]<=‘Z‘)
{
p[i]+=32;
}
if(k[j]>=‘A‘&&k[j]<=‘Z‘)
{
k[j]+=32;
}
c[i]=(k[j]-‘a‘+(p[i]-‘a‘))%26+‘a‘-32;
}
while(k[j]==‘\0‘)
{
for(ij=0;p[i]!=‘\0‘&&k[j]!=‘\0‘;i++j++)
if((p[i]<‘a‘||p[i]>‘z‘)&&(p[i]<‘A‘||p[i]>‘Z‘))
{
c[i]=p[i];
}
else
{
if(p[i]>=‘A‘&&p[i]<=‘Z‘)
{
p[i]+=32;
}
if(k[j]>=‘A‘&&k[j]<=‘Z‘)
{
k[j]+=32;
}
c[i]=(k[j]-‘a‘+(p[i]-‘a‘))%26+‘a‘-32;
}
}
c[i]=‘\0‘;
printf(“使用vigenere密码加密后的密文为:\n“);
puts(c);
}
void decryption
相关资源
- C++实现RSA加密解密算法
- 椭圆曲线ECC加密解密算法的c语言实现
- C语言实现凯撒和维吉尼亚加解密
- MFC实现RSA算法
- MFC实现AES非对称加密解密算法
- AES加密解密算法实现C、C++
- MFC vc6.0 RSA DES MD5 加密解密算法
- 维吉尼亚 只知道密文进行破译得倒原
- DES加密解密算法的C语言实现
- 维吉尼亚密码 C语言
- 维吉尼亚密码的加密和解密C语言实现
- 维吉尼亚密码的简单实现
- DES加密解密算法C++程序设计
- rsa加密解密算法C语言代码
- 维吉尼亚加密解密的C语言实现
- 维吉尼亚加密解密C++实现
- vigenere密码加密解密算法实现软件Vc
- rc4加密解密算法
- vigenere加密解密C语言代码
- C语言版本的DES加密解密算法代码!(
- VC++ DES 加密解密算法
- MFC有界面RSA加密解密算法实现
- 300种加密解密算法C++源代码
- 300多种加密解密算法C++源代码
- DES加密解密算法(可加解密中文字符
- 维吉尼亚密码的加解密C语言实现
- 维吉尼亚密码的c++程序设计
- DES_加密解密算法的C++实现--实验报告
- 维吉尼亚密码C语言实现
- 信息安全编程DES加密解密算法MFC程序
评论
共有 条评论