質問: decrypt(password, enc) # 結果を表示する print("暗号化", enc) print("複合化", dec) ``` 何かいい解決策があれば教えていただきたいです。お願いします。
回答: 質問文に書かれているエラーログは、PyCrypto のものではなく PyCryptodome のものに見えます。PyCryptodome で動かすのであれば、そのための変更が必要です。 質問者さんによる前回の質問に書かれている通り現在 PyCrypto は非推奨であり、PyCryptodome への移行が推奨されています。どちらで書いても `import` 文は一緒になるため同じように使えそうですが、いくつか違いがあります。 API レベルの主な変更点は、PyCryptodome のドキュメント "Compatibility with PyCrypto" に書かれています。また、Changelog に書かれている変更点も別に注意が必要です。 更にこれ以外にも細かい変更点があるようです。たとえば metropolis さんがコメントでご指摘なさっているように、`Crypto.Cipher.AES.new()` の引数 `iv` の受け付けるものが "byte string" から "bytes, bytearray, memoryview" に変わっています。今回のエラーはこの違いに由来するもので、`iv` に string を渡すと質問文に書かれたエラーが出ます。bytes にすればよいので、たとえば ``` iv = "L3f4mlTJtCIPV9af".encode('utf-8') ``` とすればエラーを回避できます。