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

Roh*_*han 6 java encryption aes padding

我试图从文件读取并使用AES在CFB模式下加密数据,没有填充

' AES/CFB/NoPadding '.IV长16个字节.

鉴于AES默认情况下,使用16字节块,我会考虑使用填充方案,如果我使用CBC或任何其他模式,但CFB.CFB基本上不需要填充明文.

所以问题是如果我的文件包含的数据少于16个字节,那么什么都不加密.如果它大于16个字节,则只有前16个字节被加密.

这清楚地表明块大小正在进入,如果块大小存在下溢或字节溢出,则丢弃该数据/字节.

我不明白的是在使用CFB时,我不需要填充数据..对!那么为什么AES的16字节默认块大小开始起作用并截断数据呢?

Jam*_*olk 4

您未能指定要为该模式反馈的位数,因此您将获得默认的 128 位。听起来您想要 8 位,为此您应该在 getInstance() 中使用以下参数:

Cipher.getInstance("AES/CFB8/NoPadding");
Run Code Online (Sandbox Code Playgroud)