3

そのため、ノード暗号化ライブラリを使用して、制御できない他のソフトウェアによって暗号化されたバイナリファイルを解読しています。次のコードを使用して、正常に復号化できます。

decipher = crypto.createDecipheriv('aes-128-ecb', password, iv);
decrypted = decipher.update(body, 'binary', 'utf8');

これは素晴らしいことですが、復号化されたテキストの末尾から約11文字が切り捨てられているようです。平文が11200文字を超えているので、これは奇妙です。今、私はこの行を持っていないので理由が疑われます:

decrypted += decipher.final('utf8');

ただし、その行を追加すると、エラーが発生しますTypeError: DecipherFinal fail

IVを使用せずに、さまざまな出力エンコーディングを試しましたが、うまくいきませんでした。私もこの質問を読みました:nodejs暗号解読の何が問題になっていますか?これは同じ問題のように見えますが、opensslコマンドラインで実行することになっている手順、またはそれがノードプログラムにどのように影響するかを理解していません。

4

1 に答える 1

4

自動パディングを false に設定してみましたか? デフォルトでは true に設定されているように見えるため (以下を参照)、相手がデフォルトのパディング (それが何であれ、おそらく PKCS#7 パディング) を使用してパディングしない場合、結果は失敗するはずです...

decipher.setAutoPadding(auto_padding=true)

于 2013-01-31T02:05:02.290 に答える