問題タブ [symmetric-key]
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.
java - チャンキング AES 対称暗号化
ユース ケース 1 (作業ベースライン):
ユースケース 1 は簡単で、実装されているか、機能しています。
- Java では、一挙にストリームをディスクに書き込みます。
- ディスク上のコンテンツが暗号化されるように、出力ストリームを対称暗号でラップします。
- 後で、ディスクから読み取ります。入力ストリームから取得されたコンテンツが平文で元のものと一致するように、入力ストリームを同じ対称暗号で一挙にラップします。
ユースケース 2 (適切なソリューションが決定されていない):
- Java では、ストリームをディスクに書き込みます。
- 後続のバイト (「チャンク」) をファイルに追加できるようにします。
- ディスク上のコンテンツが暗号化されるように、出力ストリームを対称暗号でラップします。
- すべてのチャンクが同じ方法で暗号化されるように、同じ暗号を使用します。
- 後で、ディスクから読み取ります。入力ストリームから取得されたコンテンツが平文で元のものと一致するように、入力ストリームを同じ対称暗号で一挙にラップします。
問題文:
「abc」を暗号化および復号化しても、「a」、「b」、および「c」を個別に暗号化および復号化した場合と同じ結果は得られないため、ユース ケース 2 で説明した「チャンク」ファイルは正常に復号化されません。
実際の質問:
...問題は、(a) 暗号化されたチャンクの事前知識がなくても、一度に 1 つのチャンクを暗号化できる Java 暗号ストリームをどのように構成し、(b)単一の入力ストリーム暗号ラッパー (ファイルが追加されたインデックスの知識は必要ありません)...
php - 暗号化用のキーを生成するさまざまな方法は何ですか
データを暗号化するためにphpでaes256を使用しています。
さまざまなドキュメントで、キーを生成するさまざまな方法を確認できます。
または
または
他の例とは対照的に、最初の例のポイントは何ですか? 単純に 128 または 256 の長さのランダムな文字列を使用しないのはなぜですか?
ここで例を使用していますhttp://php.net/manual/en/function.mcrypt-encrypt.php上記のさまざまなキー生成方法のそれぞれ。
encryption - AES CBC - メッセージの入出力と IV があり、キーを見つける必要がある
初期化ベクトルと入力テキストを指定しました。また、エンコードされたテキストがあります。
私の仕事は出力テキストを変更することなので、今私の問題は、どうすればキーを見つけることができるかということです。(これは宿題であり、私の教授は、家に帰る途中の電車の中で 30 分でできると言っていました... しかし、私にはまったくわかりませんし、AES と CBC がどのように機能するかを知っているだけですが、どのように始めなければならないかは絶対にわかりませんこの仕事。
タスク: 最初の 16 バイトは初期化ベクトルで、次の 16 バイトは私の暗号文です。そして、「カールに5ドルを送ってください」というテキストがあります。ここで、最初にキーが必要だと思います。なぜなら、私のタスクは、「カールに 5 ドルを送る」というメッセージを「ボブに 50 ドルを送る」に変更することだからです。
php - mcrypt_encrypt の 32 文字の PHP AES キー
次の PHP コードを検討してください。
実行すると、次の出力が生成されます。
PHP Java AES CBC Encryption Different Resultsからコードの最初のビットを盗んだことに注意してください。
今 - ここに質問があります:
最初のケースでは、渡されたキーは 16 文字の文字列でした。個々の文字のそれぞれが 8 ビット量として解釈された場合、これは 128 ビットの鍵サイズを期待します。実際、上記で参照した StackOverflow ページにある Java コードはまさにそれを実行し、PHP と同じ結果を取得します。
上記の 2 番目の呼び出しmcrypt_encrypt
では、キーの長さを 2 倍にしました。 mcrypt_encrypt
これを喜んで受け入れますが、最初のケースとは異なる暗号化された出力を生成します。したがって、明らかに、これは別のキーと見なされます。たとえば、最初の 128 ビットのみを取得してそれ以降を破棄することはありません。
では、入力キー文字列をどのように処理して、アルゴリズムが必要 mcrypt_encrypt
とする 128 ビット キーを生成するのでしょうか?MCRYPT_RIJNDAEL_128
違いがある場合、私が特に関心を持っているのは、2 番目の例のように 32 文字の文字列が渡される場合です。一致する復号化ルーチンを (Java で) 作成する必要があるため、この場合、キーは実際に生成されます。私が引用したページには、完全に優れた Java コード (私のすべてのテスト ケースで動作します) があります。キー バイトの適切なセットが欠けているだけです。
javascript - CryptoJS.RC4.encrypt でバイト配列をキーとして使用できますか?
RC4 暗号化のキーとして、バイト配列 (印刷できない文字) を使用する必要があります。平文は文字列です。CryptoJS.RC4.encrypt
プレーンテキストとキーの両方に文字列のみを期待しているようです。私は正しいですか?encrypt()
そうでない場合、文字列とバイト配列で呼び出すにはどうすればよいですか?
java - 32バイト文字列表現へのJava aesキー
これはどのように行うことができますか?結果の aes 秘密鍵を取り、それを平文の 16 バイト表現に変換したい
これを使用してキーを生成します(256ビットのキーを考えていない限り、キーは32バイトになると確信していますか?)