我想弄清楚爲什麼我的Python客戶端和Ruby服務器在如何加密數據方面存在分歧。我在Ruby代碼和我的代碼中看到的唯一區別是它們沒有指定初始化向量,因此它回落到默認值\ x0's爲什麼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)
(這個例子本質上是從PyCrypto文檔的示例代碼,而無需指定IV)的文檔說W/R/t時的IV「是可選的,並且不存在時,它會給定所有零的默認值。「但是,我得到錯誤「ValueError:IV必須是16個字節長」。
所以我可以指定IV,這不是問題本身,但我想弄清楚,如果它認爲它不能使用默認值,如果我使用庫的方式有其他錯誤。
我不禁覺得截斷一個鍵是個壞主意。 – cpburnz