「同等」のテキストをどのように見つけますか?
-
19-08-2019 - |
質問
私は(生成されない)すべての非文字とucasingを取り除いた後、1つの文字列は、単純な置換によって他に変換することができ、というように2つのテキスト文字列を検索する。
この動機はそのことを知られて、私は確率分布を経由してサイファーを攻撃するための方法をテストしているプロジェクトから来ています。私は、一度簡単な換字式暗号で暗号化された大規模な、コヒーレントプレーンテキストを検索したいのですが、また、コヒーレントである何か他のものに復号化することができます。
これは2部、コーパスにおける最長のような文字列を見つけてしまい、そのコーパスを取得します。
<時間>最初の部分は、最初の出現の順序がシーケンシャルになり置換後の文字列をオフキーBツリーで攻撃のいくつかの並べ替えに愛想ように私には思える。
HELLOWORLDTHISISIT
1233454637819a9b98
ツリーの各深さに基づいて、文字列の最大値および長さを知り、残りはちょうど符号化されている。に基づいて少し最適化 <時間>
その他の部分は、かなりより複雑になります。どのように検索するテキストの大規模コーパスを生成するには?それが最大のテキストの量が、どのようにテキストだけにそれを取り除くためにへのアクセス権を持っていると同じようにインターネットクモのいくつかの種類は、理想的なアプローチであるように見えるでしょうか?
質問です。これより良いを行う方法上の任意のアイデア?
<時間>編集:使用されていた暗号がめちゃくちゃ基本26文字置換暗号である。
。p.s。これは、より多くの思考実験は私のために可能性の高い実際のプロジェクトです。
解決
26があります!異なる換字式暗号。これは、選択した88ビット上でビットということになります。
>>> math.log(factorial(26), 2)
88.381953327016262
英語のテキストのエントロピーは、少なくとも文字あたり2ビットのようなものです。だから、あなたが合理的に置換下、誤って等価である以上45-50文字の通路を見つけることを期待することはできません私には思える。
大規模コーパスの場合は、グーテンベルクプロジェクトとウィキペディアはスタートのために、あります。あなたはそれらのウェブサイトからのすべての英語版ウィキペディアのXMLファイルのダンプをダウンロードすることができます。
他のヒント
私はあなたにも「コヒーレント」で置換を生成するために、少し多くを求めていると思います。これは、暗号化アルゴリズムは、テキストがコヒーレントであるかを把握するためのAIの問題です。また、長いテキストは、それはすぐにあなたがいる限り、あなたが暗号化されているテキストとして「キー」を必要とする点に近づいて...「コヒーレント」結果を作成することになり、より複雑です。このように、全くそれを暗号化の目的を破って。