2

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

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

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

两个问题:

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

1 回答 1

1

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

此外,您始终可以尝试解密填充消息,NOPADDING但您必须在某些时候处理明文中的填充。

总体而言,您最好尝试找出您的消息未正确解密的原因,而不是尝试解决方法。处理加密货币时的变通办法通常不是一个好主意。

于 2013-10-21T14:26:42.650 回答