2014-12-28 89 views
-3

所以我得到了一个任务,我需要解密一个字符串,用密钥中的某个密钥加密。所以我的思路是找到字符串中最常见的字母,并从中找到关键字,因为最常见的字母是E,当我得到关键字时,我将解密文本(基本上每个字母都是字母。“T空间 - 关键现在我面临着一些困难:如何找到移位密码的加密密钥?

  1. 我希望我的计划,为每一个关键工作,所以我不知道最常见的字母后或E之前(在ASCII图表)因此,我不能只是基板E,并得到答案,我不知道什么数学的东西,我需要做的,使其工作。

  2. 此外,当我找到钥匙,我不知道如何使例如A回去t ØY,喜欢做的圆(但我想我也许知道我是怎么想的与%运营商)

反正任何人,可以帮助非常感谢,我不允许真正的高级命令。字符串中的所有字母都是大写字母,密码是简单的移位密码。

+0

我们在这里谈论什么样的密码?简单的移位密码或更复杂的东西? – DinoOcch

+0

简单的密码,你转移信件的前进 –

+0

我可以添加我已经做了,但我觉得它不会改变 –

回答

0

为了简单起见,我假设您正在尝试解密凯撒(或移位)密码。尽管涉及的原则也适用于其他密码。

你表示你想找到最常见的字符。这并不能真正帮助你,因为这封信可以成为其他任何信件。然而,你可以用这个做一个字母频率攻击...然而这只对非常长的字符串非常有效......

解决这个问题的最简单方法可能是强制解决方案。由于只有极少数解决方案,因此强力可能非常有效。字母表中有26个字母,所以我们可以移动0-25。这意味着只有25个可能的字符串需要检查。

找到这些字符串是相对平凡的。在1-25范围内使用循环。现在,只需将字符串中的每个字符转换为数字0-25 [A = 0,B = 1 ... Z = 25]并添加移位[1-25]。 (char_value + shift) % 26会给你新的角色价值。 (您也可以使用ASCII字符值,但我为了理解而使用这些值。

然而,不太重要的是确定哪个字符串是最有可能的在我看来,最好的方法是这是使用一个普通单词的字典 - 你可以在这里阅读更多关于这种类型的攻击:http://en.wikipedia.org/wiki/Known-plaintext_attack。用你的字典,你只需要查找已知单词数量最多的字符串 - 虽然它可以比这更复杂。机会是,这将是您的解决方案。

这将为所有情况。


如果您只有想要查看哪些最常见的字母被转换为E的问题,问题就变得非常简单。但是,在实际的例子中,字符串中最常见的字母不一定是E,所以这种策略并不是最优的。

通过循环字符串找出最常见的字母,保持每个字母出现的运行计数。你可以用很多方法来做到这一点。你可以使用整数列表,地图,或几乎任何东西......

从这里,确定从这封信到E转变的大小。例如,如果S是最常见的,则移位为12. E的值为4.S的值为18.移位是(26-18)+4。可以使用余数函数将其转换为所有可能的字母,例如((26-o)+4) % 26,其中o是最常用字母的值。所以如果最频繁的字母是A = 0,26 + 4%25 = 4,这是正确的转变。

现在,您可以如上所述移动所有字符。

+0

在我们的工作中,我们知道单词E是英语字母表中最常见的字母,所以我查了一下最常见的字母是什么我的字符串,最终是S所以我认为E被转移到S,现在我想为每个字符串做这个找到最常见的字母,你可以知道密钥并解密字符串 –

+0

好吧,我得到了一切,那我正在寻找的公式,你能解释我为什么以这种方式计算Shift吗?就像我得到它的权利,但不知道如何得到它。编辑:好吧,我现在得到它,你S筛选前进到E所以每封信都会去她的地方,我试图计算从E到S的转变,而不是从S到E –