过了个年回来有点时间,就将上个学期的密码学分析的期末实验写上来给大家提供点思路吧~,当时让小白B半天摸不着头绪的一道破译简单加密的题目. 放上参考代码链接 https://github.com/toufuChew/monoalphabeticCipher
问题如下:
分析破解一个基于简单代替密码(simple substitution cipher)加密的密文,不考虑标点符号。
这个问题理解起来很简单,它说的简单替代密码,顾名思义,加密过程就是将明文的一个字符用相应的一个密文字符代替。而单字母密码分两种不同的加密形式,一个单表代换密码,一个多表代换。
这里要破译的密文就是单表的替换加密的密文,加密时密钥空间K是26英文字母之间的排列组合,每个明文字母与另一密文字母唯一对应,K集合元素就有26!。例如
明文: my lazy dog is living comfortably in SZU
密文: ow npbw gdm ar nasafm qdoudkcpgnw af rbv
明文加密成密文都是在一张简单的映射表的基础上一一替换进行的。这种映射表可以由多种方式生成,下面简单介绍其中一种,我们的重点是在破译部分。
加密方式:
代替法-
采用另一个乱序字母表来替代明文字母,明文字母和密文字母保持一一对应关系。要得到一个乱序字母表,可以采取随机排列的方式,也可以由一张混淆字母表生成,过程如下:
步骤
a) 随机选择一个密钥字或密钥短语,例如:cybersecurity
b) 去掉重复字母:cybersuit
c) 这些字母构成矩阵的第一行,矩阵的后续各行由标准字母表中去掉密钥字的字母后剩下的字母构成(下图)