問題タブ [cbc-mode]
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.
php - PHP RIJNDAEL_128 CBC から node.js の文字列を復号化する
node.jsを使用して、CBCモードでPHP RIJNDAEL_128を使用してサードパーティのソフトウェアによって以前に暗号化された文字列を復号化しようとしています。
サンドボックス内の次の PHP コードのインタラクティブなリンクを次に示します。コンパイルして自分で確認できます。http://sandbox.onlinephpfunctions.com/code/504a7d052c5b123fac8103a073c05c2ff5f80571
PHP ソースコード:
これがnode.jsでの私の実装です:動作していません。動作するソリューションについては以下を参照してください
私は多くのことを試しましたが、ここでInvalid key length
と他のエラー メッセージの間で迷子になっています。私がよく理解していないことの1つはKEY
、データの暗号化に使用されているように見えるのはazertyuiolskzif
、ほとんどのスクリプトが必要な32文字の文字列を使用しているのに対し、15文字の長さであるということです...おそらくPHPは32文字の文字列を必要としませんが、ノードは必要ですか?
あるいは、128 と 256 の違いに関連しているのかもしれません。または、PHP と Node 実装の間のパディングの違いによるものですか?
PHP で文字列を暗号化し、Node.js で復号化するで与えられたアドバイスに従おうとしましたが、ノードでデータを暗号化することにまだ成功していません。
編集:
さらに掘り下げた後(回答の説明に感謝します)、最終的にNode.jsで暗号化/復号化を機能させました。しかし、PHP で暗号化されたものをまだ解読できていません。
crypto++ - Crypto++ を使用した手動の CBC 暗号化処理
CBC モードで手動暗号化をいじろうとしていますが、まだ Crypto++ を使用しています。CBCアルゴリズムは(AFAIK)です:
そこでCrypto++で実装してみました。英数字のみのテキスト ファイルがあります。テスト 1 は、ファイル チャンク (16 バイト) ごとに読み取り、CBC モードを使用して手動で暗号化し、暗号を合計します。テスト 2 は、Crypto++ 組み込み CBC モードを使用します。
テスト 1
ブロックが 1 つしかないため、ECB (?) モードを使用するため、これは私の encrypt() 関数です。
そして、これは 100% Crypto++ で作成されたソリューションです:
テスト 2
テスト 1 とテスト 2 の結果は異なります。実際、テスト 1 の暗号化されたテキストには、テスト 2 の結果が含まれています。例:
テスト 1 の結果 aaa[....]bbb[....]ccc[...]...
テスト 2 (Crypto++ 組み込み CBC) の結果: aaabbbccc...
xor() 関数が「sameChar ^ sameChar = 0」に関連する問題を引き起こす可能性があることは知っていますが、コードのアルゴリズムに関連する問題はありますか?
これは、jww の最初のソリューションの後の私のテスト 2.1 です。
エラーがスローされます:
AES-CRPP.exe の 0x7407A6F2 で未処理の例外: Microsoft C++ 例外: CryptoPP::InvalidDataFormat メモリ位置 0x00EFEA74 で
BlockPaddingSchemeDef::NO_PADDING を使用した場合、BlockPaddingSchemeDef を削除しようとした場合、または BlockPaddingSchemeDef::DEFAULT_PADDING を使用した場合にのみ、このエラーが発生しました。:?
python-3.x - 長いメッセージを復号化するときに Python3 PyCrypto が Valueerror を生成する
ハイ、
DES 暗号化メッセージを DES と XOR で復号化する必要があります。
24 バイトの長さのメッセージを復号化すると、正しく実行されます。
ただし、40 バイト以上の場合は、次のようなエラーが発生します。
このコードでメッセージを暗号化します。
暗号化はエラーなしで機能します。
しかし、このコードで暗号化されたメッセージを復号化しようとすると:
長いメッセージを復号化すると何が問題になりますか?
ありがとうございました
python - NodeJS と Python の間の AES 128 CBC 復号化の異なる結果
現在、Python で書かれたネットワーク デバイス プロトコル ライブラリを再実装しようとしています。そのコンテキストでは、暗号化された文字列と暗号化された文字列を処理する必要があります。これで、暗号化は正常に機能します。Pythonコードと同じ結果が得られ、デバイスも通信してくれます。
さて、私は現在、同じ文字列を復号化すると長さが異なることに驚き、混乱しています。
私は2つのサンプルを書きました:
私は結果を得る
nodeJS の同等のコード
結果を投げる
それで、ここで何が問題なのですか?暗号化されたデータの一部が欠落しているのはなぜですか?
c# - File_Decryption - 復号化されたファイルにジャンク文字が見つかりました
ファイルを暗号化するための暗号化ツールがあります。暗号化されたファイルを調べると、暗号化されたファイル内に .PEM の名前が書き込まれていることがわかりました。
私は以下のように C# コードを書きます。
私の復号化コードは次のようなものです:-
1) -コードはほとんど正常に動作していますが、実際のテキストを置き換える 8 バイトのジャンク文字をどこかに見つけました。 [ 主な問題]
2) - 暗号化プロセス中にどのパディング スキームが使用されているかわかりません。ゼロ パディング モードで復号化を試みました。
注 - FILE CONTAIN には文字 a (HEX VALUE = 61) のみが含まれます。
c++ - 2つの文字列間のC++ xor Null CBC
Crypto ++を使用して、AESのCBCスキームを実装しようとしています。私の問題はここから来ています: 2つの文字列を「xor」しようとすると、自分自身で文字をxorしようとすると、いくつかの問題が発生します。
呼び出し:
ここで、plainTextBlock はプレーン テキストからの 16 バイトのブロックで、iv は初期化ベクトル (16 バイト) です。その後、私の平文の長さが130で、パディング後144、暗号化後は288であると仮定すると、xorのためにその次元に到達できません。助けてください!ありがとうございました!
go - Golang: DES と CBC で 5 文字の長さのプレーン テキストを暗号化するにはどうすればよいですか?
現在、5 文字の長さの平文を 12 文字の暗号化文字列に暗号化しようとしています。一意の IV (ランダムに生成されたものではない) と一意のキーを指定し、DES を使用できるようにしたいと考えています。私の現在のコードでは、平文の長さを 8 文字にする必要があります (5 文字の名前と 3 つのスペース)。