今天我们在课堂上进行了一个测验,其中我们必须使用给定的密钥来破解密文,而不是使用算法。可以说我无法在分配的12分钟时间内解密它,并且可能在测验中得到0%的分数。

所以,我只是想知道是否有某种解密简单替换密文时遵循的标准技术。

#1 楼

在尝试破解未知密码时,首先需要弄清楚它是哪种密码。通常,一个好的起点是从最普遍和众所周知的经典密码开始,消除那些显然不适合的密码,然后尝试其余的密码,看看它们中的任何一个是否可行。 >显而易见的第一步是查看密文字母:密文是否由字母(如果是,则用什么字母),数字,抽象符号或它们的某种组合组成?如果是字母,是否包含空格,标点符号或大小写区别?如果是,它们看起来是否也以某种方式被打乱了,或者它们可能只是照原样保留了?

编译密文的字母(或符号)频率表,并将其与相应的纯英语文本表进行比较,通常可以得出有关正在处理的普通密码类型的信息:


如果密文是用字母写的,并且它们的频率或多或少与纯英文文本的频率相匹配(无意义的短语ETAOIN SHRDLU对此很容易记住),那么您可能正在处理换位密码。 (如果最常用的字母不太匹配,但对于自然文本仍然看似合理(主要是元音和一些简单的辅音,则可能是其他语言的文本换位。)
如果排名频率分布看起来与普通英语相似,但是字母显然是混乱的(例如,最常见的字母是GXQ而不是ETA),该密码很可能是单字母替换(可能与换位组合) 。
如果频率分布比自然语言所期望的更接近均匀,那么您可能正在寻找一种多字母替代密码。有了经验(和足够的密文),人们甚至可以仅基于频率分布来猜测最可能的密文。

知道密文是否具有密钥以及密钥的形式单词(数字,数字,数字序列等)也可以帮助减少可能性的范围。例如,假设密文是大写字母,没有空格或标点符号,并且我们知道它的密匙是单词或短短语。这大大缩小了可能的选择范围:


如果是换位密码,则显而易见的尝试是柱状换位及其类似双换位的变体。
如果是一个单字母替代词并有一个关键字,由mikeazo在他的答案中描述的关键字cipher是显而易见的选择。
如果它是一个多字母替代词,则还有更多选择。我尝试使用的第一个密码是Vigenère,autokey和Playfair。如果这些方法不能解决问题,那么Beaufort,两平方和四平方也可能值得尝试。

由于您已经知道密钥的含义,因此测试每个密码应该非常简单:只需尝试使用密钥对消息解密,看看输出是否有意义。

请注意,在某些情况下,密码之间可以共享工作量。例如,Vigenère和自动密钥密码对于消息的开头是相同的;它们只有在到达关键字结尾时才开始表现不同。尝试使用这些密码的简单变体,例如改变加密和解密规则,也是一个好主意。其中一些在两个方向上均能很好地工作,并且可能已被使用。

#2 楼

如果它是一个简单的替换密码,则有一些标准技术:频率分析。




频率分析。计算每个字母在密文中出现的次数。最常见的密文字母可能对应于英语中最常见的字母。英文中最常见的字母是ETAOINSHRDLU ...(按流行程度降序排列)。因此,密文中出现频率最高的字母可能是E,T,A或O等,以可能性的降序排列。

使用此信息,您可以做一些初步的猜测,看看是否有任何单词开始形成。

如果您知道单词是如何分解的(如果单词间的空间保留在密文中),您还可以在以下位置对字母进行频率分析一句话的结尾。以下是出现在单词末尾的最常见字母:ETSDNRY。

您还可以对成对的字母(图)进行频率分析。但是,这往往很难用手利用。以下是一些常见的有向图(字母配对):TH,HE,AT,ST,AN,IN,EA,ND,ER,EN,RE,NT,TO,ES,ON,ED,IS,TI。以下是一些经常翻倍的字母:LL,TT,SS,EE,PP,OO,RR,FF,CC,DD,NN。因此,如果您在密文中看到一个字母,该字母彼此相邻出现两次,则很可能就是其中之一。


拖动婴儿床。如果您对邮件中出现的某个单词有所怀疑,请寻找可能匹配的单词。这将为您提供单词中所有字母的映射。尝试将该映射应用于其余的密文,并检查是否获得了看起来似乎正确的东西。

当您对邮件的可能内容有一定的领域了解时,将婴儿床拖拉的效果最佳。但是,如果您一无所知,可以尝试与英语中最常见的单词匹配。以下是英语中一些最常见的单词:THE,OF,ARE,I和AND,你,A,CAN,TO,他,她,那个,在,是,已经,它,他,他,他。 br />


#3 楼

替换密码由从字母表中的字母到字母表中的字母(不一定是相同的字母表,但在这种情况下可能是这样)的映射组成。密钥可以采用多种形式。我在实践中看到的是:


关键是映射(即a->m, b->x, c->q,...)。
键代表一个转变。 5的键表示a->f, b->g,..., z->e的转换。
该键是用于生成地图的单词。这通常是通过将字母写出来来完成的。然后在下面,写下键(删除重复的字母),然后写下其余字母,删除键中的字母。例如:

abcdefghijklmnopqrstuvwxyz paswordbcefghijklmnqtuvxyz

然后,通过在第一行中找到字母并在第二行中向下查找来替换。

有了密钥,您很有可能必须使用这些方法中的一种(或可能使用另一种)来提出映射。