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
从上面看出,对放射密码的破解,一次假设可能不会成功,我们要多次假设才能得到我们想要的结果
假设一般频率最高的不动,如果不满足,次高的换
解方程用到一次同余方程解法,不知道的可以百度