Go と Pycrypto の間で一貫性のない AES-CFB 暗号化結果
AES-CFB 暗号化を利用すると、Go と Pycrypto を比較するとさまざまな結果が得られます。この矛盾を調査するために、提供されたコード サンプルを分析します。
Python では、Crypto.Cipher.AES は明示的に指定された初期ベクトル (IV) を持つ MODE_CFB を利用します。逆に、Go では、aes.NewCipher は、AES ブロック暗号を明示的に作成し、その後、目的の IV で CFBEncrypter または CFBDecrypter をインスタンス化する必要があります。
2 つの実装の重要な違いは、セグメント サイズの扱いにあります。 Pycrypto は CFB8 として知られる 8 ビット セグメントで動作しますが、Go はデフォルトで 16 ビット セグメントを使用します。この違いにより、暗号化結果の相違が観察されます。
Go を Python の CFB8 アプローチに適応させる
Go が CFB8 設定で Pycrypto によって暗号化された暗号文を復号できるようにするには、ソースGo の CFBDecrypter のコードは変更できます。具体的には、XORKeyStream メソッドを 8 ビット セグメントの処理に適合させることができます。
この変更により、Go は Pycrypto の特定の AES-CFB8 パラメーターを使用して暗号化された暗号文を復号できるようになり、暗号化タスクと復号タスクの処理における 2 つの言語間の相互運用性が促進されます。
以上がGo と Pycrypto で異なる AES-CFB 暗号化結果が生成されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。