读书人

仿射密码的算法实现,该如何解决

发布时间: 2012-02-10 21:27:42 作者: rapoo

仿射密码的算法实现
1.问题描述
仿射密码系统用五元组(P,C,K,E,D)表示,设P=C={计算机学院网络工程信息安全,我们热爱中华人民共和国。大家…}.现在截获了一段密文“和院程安我爱计”。请编程分析出明文。
2.基本要求
程序要求界面友好,自动分析程度高,能输出加密所用的密钥和明文。
3.实现提示
①申请三个字符数组Z,C,M。
Z={计算机学院网络工程信息安全,我们热爱中华人民共和国。大家},
C=“和院程安我爱计”,
M保存分析所得的明文。
②密文是通过ek(m)=am+b mod 28得到的,为了解密我们使用dk(c)=a-1(c-b)mod 28。这里有一个函数要先实现:
int gcd(int n,int m)
{
int r,temp;
if(n<m)
{temp=n;
n=m;
m=temp;
}
while(m!=0)
{r=n%m;
n=m;
m=r;
}
return n;
}
③有了以上的准备工作,我们就可以编写程序的主要部分了,它是一个多
重循环:
for(a=2;a<28;a++)
if (gcd(a,28)==1)
{/*求a的乘法逆元p */
for(b=2;b<28;b++)
if ((a*b)%28==1){p=b;break;};
/* 用dk(c)=p(c-b) mod 28 */
for(b=0;b<28;b++)
{对数组C进行处理,输出k=(a,b)和M,M有意义程序结束,分析完成。}
};
else continue;


哪位高手可以尝试一下?

[解决办法]
四种加密解密算法的源代码:移位密码、仿射密码、维吉尼亚密码以及置换密码

http://zhidao.baidu.com/question/3586801.html

读书人网 >C++

热点推荐