【发布时间】:2014-03-17 12:25:00
【问题描述】:
我有一个HashMap,它以字符、整数的形式将每个字母的频率存储在一个密文块中。然后按最频繁的降序将地图排序为LinkedHashMap。
然后我将这些频率与已知的字母频率列表进行比较,以尝试猜测密码字母是什么。我遇到的问题是如果 2 个或更多字母出现相同的次数。
例如,如果我们采取:
E T A O I
作为 5 个最常见的字母 desc,然后是密文中的字母频率:
D=30 B=25 I=22 G=19 H=17
那么假设D 映射到E 是公平的,因为它是最常见的,其次是B 到T 等等。
如果字母频率是:
D=30 B=25 I=22 G=22 H=22
尚不清楚I、G 或H 是否应该映射到A,因为它们都是B 之后最常见的。
我有点卡住了,需要一种方法来创建一组字符数组,其中包含频率列表的每个排列。需要在 char 数组中输出类似的内容:
DBIGH
DBIHG
DBGIH
DBGHI
DBHIG
DBHGI
任何帮助将不胜感激
【问题讨论】:
标签: java arrays cryptanalysis