众所周知,作为古典密码之一的凯撒密码还是十分经典的。在密码学里面,恺撒密码(英语:Caesar cipher),也叫恺撒加密、恺撒变换、变换加密,是一种最简单且广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。当年恺撒曾用此方法与其将军们进行联系,这个加密方法是以罗马共和时期用恺撒的名字命名的。偏移量位数就是凯撒密码加密和解密的密钥。
在我一开始学的时候,我感觉凯撒密码其实也算比较简单的密码之一(而且在我初学密码学的时候,给我的挚友手搓了一个凯撒密码的类似,虽然我搓错了几个字母但是,他还是解出来了大致的意思)了,因为毕竟属于古典密码的典型,而且即使使用唯密文攻击,恺撒密码也是一种非常容易破解的加密方式。因为如果基数够大的话,通过频率分析,就可以大致推测出偏移量,所以,我觉得这也是为什么现代仅仅使用凯撒密码作为加密步骤之一的原因。而且,通过多次使用恺撒密码来加密并不能获得更大的安全性,因为使用偏移量A加密得到的结果再用偏移量B加密,等同于使用A+B的偏移量进行加密的结果。
我觉得这张图挺形象的。
那么介绍到了这里,也相当于我对凯撒密码的复习。现在就到这篇blog的主要内容,也就是变异凯撒。顾名思义,也是属于凯撒密码的一种,也采取了列位移,但是,确实比较有新意。以此次考试中的题目为例:
SMKNOLr7eLJpaIJdXHX3PLahMO3FeJ4FOIKBLL3dc
这就是多重加密以后得密文,通过xx encod 解密以后,我得到了这样一串字符:
afZ_rj]]fQZcN1[^kXhTjTdZQcW\Zh
说实话,看到这个的时候,我是相当懵,因为题刷的不多,我没有见过变异凯撒密码。经过观察可以发现,这串字符并不仅仅局限于26个英文字母,而且这些字符我感觉应该都在ascll码表上,那么通过对ascll码表的对照
因为题目已经提示了有凯撒密码,所以选择查找密文开头是否与“Yunxi,flag”对应,通过查找与对比,发现这个密文开头,与“flag”这四个字母的偏移量刚好是5,6,7,8。手搓工程量太大,通过python程序,来进行解析
s = "afZ_rj]]fQZcN1[^kXhTjTdZQcW\Zh"
res =""
j = 5
for i in s:
res += chr(ord(i) + j)
j += 1
print(res)
发现解出来了一半,那么也就是是说,从''.._C''往后要么偏移量不一样,导致乱码,要么就是表不一样,经过思考,我觉得还是很大概率是前者
最终,通过不断地尝试,得到了后半段密码
通过后面的了解,我发现其实凯撒密码的思想有很多都在加密中有体现比如:
根据偏移量的不同,还存在若干特定的恺撒密码名称:
-
偏移量为10:Avocat(A→K)
-
偏移量为13:ROT13
-
偏移量为-5:Cassis (K 6)
-
偏移量为-6:Cassette (K 7)
而从其中我也看到了跨越时间的联系
(纯小白,如有错误欢迎指正)