Why must all inputs to AES be multiples of 16?

柔情痞子 提交于 2019-11-29 15:13:14

AES is a block cipher. Quote from the Wikipedia page: “a block cipher is a deterministic algorithm operating on fixed-length groups of bits”.

AES can only work with blocks of 128 bits (that is, 16 chars, as you noticed).

If your input can have lengths others than a multiple of 128, depending on your application, you may have to be extremely careful how you handle padding.

Just want to add info about mods of operations

Yes, AES is a 128-bit (16-byte) block cipher with multiple possible key length (128, 192, 256), but the cause of this text padding limitation (and error msg) is ECB mode of operation. ECB is the simplest of the encryption modes. I don't know your goals, so will just skip the part that it doesn't provide serious message confidentiality.

CBC and CTR are more common and usually appropriate to use and in CTR mode you don't need 128-bit message length.

There is also ciphertext stealing (CTS) method for ECB and CBC modes.

Method of using a block cipher mode of operation that allows for processing of messages that are not evenly divisible into blocks without resulting in any expansion of the ciphertext, at the cost of slightly increased complexity

But Ciphertext stealing for ECB mode requires the plaintext to be longer than one 128-bit block.

Because the block size is 16 bytes, the way to handle this is to add padding when encrypting.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!