問題タブ [cryptanalysis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 置換暗号を最も確実に解決するアルゴリズムはどれですか?
私は、既知の言語で書かれた長い単一アルファベット置換暗号文の暗号解読に帰着する問題を研究しています。この問題は、Sinkov のElementary Cryptanalysisで説明されているように、頻度分析と単語パターンを使用して手動で簡単に解決できます。理論的に検証されたアルゴリズムを見つけるのに苦労しています: Joux のAlgorithmic Cryptanalysisはそのような初歩的な置換をカバーしていません.Gaines のCryptanalysis: A Study of Ciphers and Their Solution (他にどのようなリソースを参照すればよいですか?) .
いくつかのアプローチは非常に明白です。順番に各置換を決定し、次に既知のものを活用することは、途中で間違いを犯さない場合にのみ機能します。発見された有効な単語の数が最大になるまで文字を再割り当てするなど、メタヒューリスティックな最適化を採用すると、検索がいつ終了したかを判断するのが難しくなります。おそらく、バリエーションをテストするための動的プログラミングのアプローチが最適でしょう。または、この質問への回答には、他の単純な方法が含まれている可能性があります。
この種の問題を解決するための好ましいアルゴリズムは何ですか?
algorithm - SHA256 部分衝突の検索
私は2つのメッセージがあります:
これら 2 つのメッセージ ( 8 桁)の SHA256 部分衝突を見つける必要があります。したがって、 SHA256(メッセージA)の最初の8ダイジェスト == SHA256(メッセージB)の最初の8ダイジェスト
には任意の文字と数字を入れることができます{}。両方の {} は同じ文字列でなければなりません
この問題を解決するために、ハッシュ テーブルを使用したブルート フォース攻撃と誕生日攻撃を試みましたが、時間がかかりすぎます。Floyd や Brentのようなサイクル検出アルゴリズムは知っていますが、この問題のサイクルを構築する方法がわかりません。この問題を解決する他の方法はありますか? どうもありがとう!