私はPythonクライアントとRubyサーバがデータを暗号化する方法について意見の相違があるのを理解しようとしています。私がRubyコードと私のコードで見る唯一の違いは、初期化ベクトルを指定していないことです。したがって、デフォルトのすべての\ x0に戻ってきます。PyCryptoがデフォルトのIVを使用しないのはなぜですか?
ivなしでPyCryptoをインスタンス化しようとすると、エラー。ここでの例である:
from Crypto.Cipher import AES
test = "Very, very confidential data"
key = b'Thirty Two Byte key, made Beef y'
gryp = AES.new(key, AES.MODE_CBC)
ドキュメントをWと言う(この例では、本質的にIVを指定せずPyCryptoドキュメントからのサンプルコードである)/ R/IV "それは任意であり、存在しない場合、それはなりTすべてのゼロのデフォルト値が与えられています。しかし、私は "ValueError:IVは16バイト長でなければならない"というエラーを受け取ります。
私はIVを指定することができますが、これは問題以前のものではありませんが、デフォルトを使用できないと思っている場合は、ライブラリを使用している方法が間違っている。
キーを切り捨てるのは悪い考えです。 – cpburnz