問題タブ [esp32]

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.

0 投票する
2 に答える
177 参照

python - 暗号化 IV - C および Python の同等物

メッセージの暗号化に相当する「初期化ベクトル」の初期化に関して問題があります。JSON経由でDjangoサーバーにデータを送信するESP32(マイクロコントローラー)があります。ESP32 では Arduino IDE を使用しているため、ESP32 のコードは C/C++ で記述されています。Django はもちろん Python を使用しています。

両側で次のように IV を初期化すると、暗号化はこれまでのところ機能します。

ESP32:

ジャンゴ:

ESP32 のライブラリには、unsigned char 配列を想定する暗号化関数があります。配列が null で終了していない (最後に '\0') ことに注意する必要があります。そうしないと、異なる結果が得られます。それが背景情報です。あなたが必要です。今、私の特定の問題に:

暗号化でカウンター モードを使用したい。両側の IV の最後の 4 バイトに整数カウンターをコピーしたい:

ESP32 では、次のことを行います。

Django では次のことを行います。

変数「iv」を出力すると、Django で次のようになります。

復号化は失敗します。サーバー上の ESP32 から元のメッセージを取得できません。

上記のように IV を初期化しないと、常に異なる結果が得られます。

Django での暗号化/復号化に PyCryptoDome を使用しています。このコード行に IV を渡します: obj = AES.new(enckey, AES.MODE_CFB, iv, segment_size = 128) IV は、この b'0000000000000000' のような形式で渡す必要があります。したがって、サーバー側で他の選択肢はありません。

ESP32 でこれを行う場合:

Django では異なる結果が得られます。何をすればいいのかわからない。

何か案は?