在AES中收缩一些密文块

时间:2013-10-21 13:34:12

标签: java encryption aes

我需要解密一个AES密文,我有密钥。问题是在Java中解密时会发生错误:

javax.crypto.BadPaddingException: Given final block not properly padded

我认为这是数据库中持久存在的数据存在问题,并且数据的某些部分已损坏(因为到目前为止没有问题,因此不能成为关键)。密文的长度是16的倍数。

两个问题:

  1. 如果我要删除最后一个16字节的块,是否可以解密数据?
  2. 您还有其他建议吗?

1 个答案:

答案 0 :(得分:1)

如果可以保证消息长度始终是AES块大小的16倍,则可以在加密时使用NOPADDING省略填充规范的填充。如果在不需要填充的模式下使用AES(即CTR模式),也可以省略填充。

此外,您始终可以尝试使用NOPADDING解密填充的邮件,但您必须在某个时刻处理明文中的填充。

总的来说,你可能最好不要试图弄明白为什么你的消息没有正确解密而不是尝试解决方法。处理加密时的解决方法通常不是一个好主意。