HashMap各文字の頻度を文字、整数の形式で暗号文のブロックに格納する があります。次に、マップは降順でソートされLinkedHashMapます。
次に、これらの頻度を既知の文字頻度のリストと比較して、暗号文字が何であるかを推測します。私が遭遇した問題は、2 つ以上の文字が同じ回数発生する場合です。
たとえば、次のようにします。
E T A O I
5 つの最も一般的な文字 desc として、次に暗号文の文字頻度:
D=30 B=25 I=22 G=19 H=17
その場合、 toが最も一般的であり、それに to などが続くとD想定するのが妥当でしょう。EBT
文字の頻度が次の場合:
D=30 B=25 I=22 G=22 H=22
これらはすべて の次に一般的であるため、 にマップするかどうかI、Gまたはにマップする必要があるかどうかは不明です。HAB
私は少し行き詰まっており、頻度リストの各順列で一連の char 配列を作成する方法が必要です。char 配列で出力するには、次のようなものが必要です。
DBIGH
DBIHG
DBGIH
DBGHI
DBHIG
DBHGI
どんな助けでも大歓迎です