仿射密码分析和破解

0x01 加密解密表达式

放射加密的数学表达式
ek(x)=(ax+b)mod 26,
相应的解密变换为dk(y)=a-1(y-b) mod 26

  • 注意这里a,a和26必须公因数必须只能有1。
  • x,y,ek(x),dk(y)是ABCDEFGHIJKLMNOPQRSTUVWXYZ的序号,从0开始到25结束。
  • a,b都是整数
0x02 破解方法

放射密码分析目标:求a,b

方法:求出频率最高的两个字母,只需要猜出两个字母的变换,就能得到a,b

英文统计规律:
在这里插入图片描述
我们用CAP来分析一个例子
密文:FMXVEDKAPHFERBNDKRXRSREFMORUDSDKDVSHVUFEDKAPRKDLYEVLRHHRH
频率分析:
我们可以看到r(8次)和d(7次)最高

在这里插入图片描述
根据英文明文分布规律,我们假设r对应e,d对应t,r的序号是17,e是4,d是3,t是19
所以我们可以列出两个方程
17=(4a+b)mod26
3=(19a+b)mod26
解出方程a=6,b=19

因为a和26现在的最大公约数是2,不是1,所以假设不成立
我们继续假设r是e的加密,e是t的加密,得到a=8,不满足,继续假设r是e的加密,k是t的加密,a=3,b=5,是一个合法的秘钥。
点击ciphers中的Affine,
在这里插入图片描述
a,b分别填3,5,解密,得到明文algorithmsarequitegeneraldefinitionsofarithmeticprocesses

在这里插入图片描述
从上面看出,对放射密码的破解,一次假设可能不会成功,我们要多次假设才能得到我们想要的结果
假设一般频率最高的不动,如果不满足,次高的换

解方程用到一次同余方程解法,不知道的可以百度

发布了168 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41683305/article/details/104733934