問題タブ [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.
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 では異なる結果が得られます。何をすればいいのかわからない。
何か案は?