問題タブ [vigenere]
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.
math - Vigenere Cipher - 復号化 (手動)
これは Vigenere 暗号文です
一致指数は 6 のシフトを示しました。私はこれが正しいことを知っています (オンラインの Java アプレットを使用して、キー「QUARTZ」を使用して全体を復号化しました)。
ただし、この質問では、キーの最初と最後の 2 文字 (「Q」と「TZ」) しか教えられません。
これまでのところ、この素晴らしいアプレットを使用して暗号文をスライスに分割しました。したがって、最初のスライスは 0、k、2k、3k、4k です。2 番目は 1、k + 1、2k + 1、3k + 1 です。など。
私の考えは、各ブロックで最も頻度の高い文字を計算することでした。最も頻度の高い文字が「U」、「A」、「R」を見つける方法の手がかりになることを期待しています。ただし、これらのブロックで最も頻繁に使用される文字は次のとおりです。
QCNVHM または QUNVHM (寛大) が得られますが、どちらも QUARTZ にそれほど近いものではありません。これを問題なくクラックできるオンライン アプレットがあるため、ブロックから適切な頻度カウントを得るにはテキストが短すぎてはなりません。
私はこれに間違った方法でアプローチしているに違いないと思います。私がどこで間違っているのかについて、あなたの一人が手がかりを提供できることを願っています.
ps これはデジタル暗号クラス用です。
encryption - ASCII以外の形式のテキストファイルの復号化
平文が「一般的(しかし最近はあまり一般的ではない)」形式の暗号化されたファイルを受け取りました。〜80000
バイト暗号化テーブルが変更されたVigenere暗号として説明するもので暗号化されています。キーの1バイトとプレーンテキストの1バイトは、暗号文の1バイトにマップされます。キーストリングには一定の長さがあり、暗号化に使用されるキー文字はキーストリングを循環します。
キーには英数字のみが含まれます。
これまでのところ、暗号文で繰り返されるトリプルの開始位置の最小公約数を見つけることにより、キーの長さが30/60であると判断しました。ヴィジュネルのかなりの標準。
今、私は復号化されたバイトが何であるかを観察し、それらが許容範囲外にある場合の可能性を排除することによって、キーの可能な文字を推測してきました(32-126が表示されるため、16-31の間の値がないなど)
これ小さなキーがあり、平文はストレートASCIIであった最初の部分で機能しました。
より大きなファイルと「新しいファイル形式」で試してみると、すべての可能な文字が拒否されます。
これにより、ASCII、Ascii85、Base64、windows-1252、utf-7、QP、およびuuencodeがすべてASCII文字セットに依存するため、これらが排除されます。また、すべてのキーを拒否するEBCDICおよびISO8859-1のフィルターも作成しました。Utf-8も失敗しました。これは、すべてのバイトが0、10、110、1110、11110、111110、または1111110で始まるキーがないためです。
私が試したことがない残りの文字エンコードはUTF-16,32,1であり、フィルタリングの方法がわかりません。
私の質問は次のとおりです。
- 私が忘れている他の文字エンコードはありますか?
- フィルターをかけすぎて、バインドされていない文字の一部をスライドさせてしまう可能性はありますか?
- ファイル形式は文字エンコード以外の意味でしょうか?もしそうなら、ASCII文字でフィルターが壊れている状態でそれを調整するにはどうすればよいですか?
- ファイル形式が圧縮またはアーカイブを意味する場合はどうなりますか?
これが私が使用するフィルタリングコードです。フィルターは私がふるいにかけようとしているものに応じて変化します。
python - キーなしでヴィジュネルコードを解く-python
これは私が理解しなければならない問題です:
「メッセージはクラスで説明されているVigenere暗号化方式を使用して暗号化されており、その暗号文EQNVZが傍受されています。コードを解読してください。キーがメッセージと同じ長さであり、メッセージとキーが大文字のみで構成されていると仮定します。 。」
Pythonでこれを行う方法はありますか?Pythonで暗号文を作成する方法があることは知っていますが、逆の方法はありますか?
python - Python 3: すべての順列を生成するのではなく、長さ r のすべての非反復的な組み合わせを生成しますか?
長さ r の Vigenere 暗号鍵の遅延反復可能なコレクションを生成しようとしています。itertools
とそのpermutations()
方法を知っています。ABCD
ただし、これは、ABCE
、 ...などのキーを生成しますが、 のABCF
ようなことは決してしませんAABC
。
したがって、基本的には、反復的ではない文字のタプルまたは文字列が必要です (つまり、反復キーを半分に分割して 2 つの同一の半分を得ることができます) が、重複する文字を含めることができます。良い例: AABABA
、ではありませんAABAAB
。
このようなキーを生成せず、3 文字を超えるキーを調べたいときに RAM を爆破しないように遅延反復されるコレクションを作成するにはどうすればよいですか?
java - すべての UTF-8 文字に対する Java の Vigenère 暗号
JavaでVigenèreを介して文字列を暗号化するためのこの単純な機能があります。これは、新しい値が計算される行の「+」ではなく「-」であるため、復号化を省略しました。
ただし、この機能は通常のアルファベット AZ に対してのみ機能します。小文字だけでなく大文字や他のすべての UTF-8 文字をサポートするように関数を変更するにはどうすればよいですか?
ご助力ありがとうございます!
java - Vigenere 暗号の Java ソース コードはどこにありますか?
私のアプリでは、暗号化を実装したいと考えていました。したがって、Vigenere 暗号のコードが必要です。Javaのソースコードがどこにあるか知っている人はいますか?
javascript - Forループ内のForループ内のForループ...=問題
それで。JSのforループの中に4つのforループがあり、私のコードは構文的に健全であるように見えますが(FireBugは私に同意します)、それでも機能しません。Index of Coincidenceを使用して、ヴィジュネル暗号の鍵長を計算しようとしています。カッパテスト<-それが役立つ場合。
私の主な問題は、Firefoxがkeylengthfinder()関数を実行しようとすると、1GBを超えるメモリ使用量と99%のCPUを消費するため、このタスクはJavascriptを実行するには計算量が多すぎるように見えることです。計算にかなり時間がかかる場合でも、この問題を解決する方法についてのアイデアをいただければ幸いです。同じコードへのリンクは次のとおりです-http ://pastebin.com/uYPBuZZz-このコードのインデントの問題について申し訳ありません。ページに正しく配置するのに問題があります。
c - KERN_INVALID_ADDRESS には困惑しました
デバッガーを実行しようとすると、次のエラーが発生し続けます。
これが私のコードです:
エラーなしでコードをコンパイルでき、正常に動作します。デバッガーを実行してfor
ループにステップインし、数学が何をしているかを調べて理解を深めています。
c - 演算トラブル
これは一部の人にとっては非常に単純な解決策のように思えるかもしれませんが、私はしばらくの間それを理解しようとしていて、私を悩ませていました.
数学は私の得意分野ではありませんでした。と の場合、の値はchar c
最後に 79 になるはずです。p[i]=72 or 'H'
s2[i]=5
この操作は素晴らしく機能しますが、何が起こっているのかを理解しようとしているので、通常の計算機で実行しようとしましたが、間違った答えを出し続けています. 操作の正しい順序と値はどうあるべきですか?
これまでに動作する完全なソースコードは次のとおりです。
私がこの操作を行っている方法は次のとおりです。
私は自分の数学がオフであることを明らかに知っていますが、デバッガーsum = 14
を介して操作を実行したときに正しく実行していると思っていchar c = 79 or 'O'
ました。
c - Vigenere 暗号化
いくつかのコードを書きましたが、その中で Vigenere 暗号化が使用されています。これは、任意のファイルを暗号化/復号化するための単純なプログラムです。
しかし、このコードは常にうまく機能するとは限りません。なぜそれが起こるのか分かりません。各バイトに対して XOR を実行します。このコードをそのような TXT ファイルでテストしました。私の間違いはどこですか?