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

时间:2012-06-14 07:05:32

标签: java encryption aes padding

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

'的 AES / CFB / NoPadding '。 IV长16个字节。

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

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

这清楚地表明块大小正在进入,并且如果存在下溢或溢出的字节w.r.t.块大小,然后丢弃数据/字节。

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

1 个答案:

答案 0 :(得分:4)

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

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