仿射密码的攻击
仿射密码的算法思想主要是两部分,加密变换c=ek(m)=am+b mod 28,脱密变换m=dk(c)=a-1(c-b)mod 28,(c,m分别代表密文和明文所对应的数字)a,b ∈Z28 且a与28要互素,否则a没有逆元则求不出明文数字对应的密文数字。
仿射密码的算法思想主要是两部分,加密变换c=ek(m)=am+b mod 28,脱密变换m=dk(c)=a-1(c-b)mod 28,(c,m分别代表密文和明文所对应的数字)a,b ∈Z28 且a与28要互素,否则a没有逆元则求不出明文数字对应的密文数字。
RSA密码系统可具体描述为:取两个大素数p和q,令n=pq,N=(p-1)(q-1),随机选择整数d,满足gcd(d,N)=1,ed=1 modN。 公开密钥:k1=(n,e) 私有密钥:k2=(p,q,d) 加密算法:对于待加密消息m,其对应的密文为c=E(m)=me(modn) 解密算法:D(c)=cd(modn)
1. 首先对要处理的消息进行初始化处理,使得消息的比特长度为512的整数倍,进行消息的填充。使得到的输入消息x分成若干份512比特分组,然后将每个512比特消息块划分为16个32比特的字块。 2. 对512比特的消息块作4轮运算,每一轮16次操作。所有这些步骤进行完之后,将A、B、C、D分别加上AA、BB、CC、DD,然后用下一块数据继续进行算法 3. 最后的输出是A、B、C、D的级联。
程序主要有三个文件组成,一个主函数,一个大整数包函数的头文件(里面定义了大整数包运算符的重载,以及字符类型的转换),一个大整数包的cpp文件。