ホームページ >バックエンド開発 >Golang >Go と Pycrypto で異なる AES-CFB 暗号化結果が生成されるのはなぜですか?

Go と Pycrypto で異なる AES-CFB 暗号化結果が生成されるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-13 11:11:10230ブラウズ

Why Do Go and Pycrypto Produce Different AES-CFB Encryption Results?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。