我正在使用AES的PyCrypto實現,並試圖使用24字節密鑰加密一些文本(24字節)。爲什麼AES的所有輸入都是16的倍數?
aes_ecb = AES.new('\x00'*24, AES.MODE_ECB)
aes_ecb.encrypt("123456"*4)
我得到這個驚人的錯誤ValueError: Input strings must be a multiple of 16 in length
那麼爲什麼我的輸入必須是16的倍數?對我而言,輸入字符串長度必須是我的密鑰大小的倍數,這樣會更有意義,因爲這樣可以在密鑰和明文塊之間進行很好的按位運算。
然後在引擎蓋下,AES填充我的密鑰,以便它是16的倍數? – Mark
@Mark它是輸入必須是塊大小的倍數,而不是密鑰。 AES允許密鑰大小爲128,192和256.一個塊的加密不是密鑰和塊之間的簡單XOR,它更復雜,並且不要求塊大小與密鑰大小相同。 –