1

古いテキストを復号化していますが、辞書から長い文字列に意味のある単語があるかどうかを高速アルゴリズムでチェックしたいと考えています。そうすれば、特定のキーが機能したかどうかを知ることができます。

したがって、辞書の前処理と大きなテーブルで問題ありませんが、25〜50文字で可能な限り高速になります。

ありがとう!

アップデート

私は言語(イタリア語)を知っていますが、テキストにはスペースがなく、ランダムな文字がいくつか含まれている可能性があります。好き:

TANKSSEENNEARUDINE昨日

また、暗号は奇妙な列型転置式であるため、1文字の頻度は固定されています。

4

3 に答える 3

5

暗号化の標準的なアプローチは、辞書に対してチェックするのではなく、平文の (想定される) 言語の確率モデルに対してチェックします。たとえば、trigraphsの単純な統計、つまり 3 つの文字が隣り合ったシーケンスは、英語と意味不明な文字の間などで大きく異なります。(英語では、「THE」が最も一般的なトライグラフです。同様に、「CXC」のようなトライグラフは英語ではまったく発生しません。)

たとえば、Vigenere 暗号は、単純な自己相関スキームを使用してキーの長さを推測し、基になる平文言語の言語統計に基づいて実際のキーを検索することで解読できます。私たちの大学で暗号学を講義していたときに、デモンストレーション目的で手順を実装しました... :)

これらのタイプの確率的/マルコフ モデルを使用することの良い点は、特定の辞書の外にある単語、タイプミスがある単語、または代替形式または古風な形式の単語も許容できることです。

于 2012-05-28T20:30:06.413 に答える
3

詳細がなければ、おそらく辞書をトライとしてエンコードし、干し草の山文字列内のすべての位置を一致させようとします。試行について知らない場合、高速な辞書検索にはこれまでで最高の構造です。

于 2012-05-28T19:49:11.410 に答える
0

詳細を絞り込む必要があります。考えてみてください。たとえば 20 ~ 30 文字の長い単語がある場合、この文字列内のすべての部分文字列のさまざまな順列をすべて取得し、それらを辞書と比較する必要があります。それは非常に重い計算になります。また、これらの長い単語がたくさんある場合は、これをクラスターなどで実行しない限り、かなり困難になります。

于 2012-05-28T19:50:32.350 に答える