AES加密在CFB模式下会截断文本

6

我正在尝试从文件中读取数据并使用AES在CFB模式下进行加密,而不进行任何填充'AES/CFB/NoPadding'。IV长度为16字节。

考虑到AES默认工作于16字节块上,如果我使用CBC或其他模式,我会考虑使用填充方案,但CFB本质上不需要对明文进行填充。

所以问题在于,如果我的文件包含的数据小于16字节,则什么也不会被加密。如果它大于16字节,则只有前16字节被加密。

这清楚地表明块大小正在发挥作用,如果存在相对于块大小的下溢或上溢,则该数据/字节将被丢弃。

我不理解的是,在使用CFB时,我不需要对数据进行填充,对吗!那么为什么AES的16字节默认块大小会起作用并截断数据?


1
请发布您用于加密的代码。 - Robert
1个回答

4

您没有指定要反馈的位数,因此默认为128位。看起来您希望使用8位,因此应该使用getInstance()中的以下参数:

Cipher.getInstance("AES/CFB8/NoPadding");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接