Java aes解密bytebuffer,包括填充为空字节

Java aes解密bytebuffer,包括填充为空字节,java,encryption,aes,Java,Encryption,Aes,我正在尝试将加密字节[]的加密代码迁移到bytebuffer,以便更好地与其他API集成 前面使用字节[8]的代码工作正常,其中解密的输出正好是未加密的字节[8] 但是,当迁移到bytebuffer时,解密的bytebuffer是一个bytebuffer,其大小不是原始消息的大小,而是原始消息+填充,即填充定义为null的空间 有没有一种好方法可以使解密结果与输入相同 代码使用AES/CBC/PKCS5P转换 我暂时只限制了bytebuffer的输出,因为我无法找到一种方法来确定正确的输出大小输

我正在尝试将加密字节[]的加密代码迁移到bytebuffer,以便更好地与其他API集成

前面使用字节[8]的代码工作正常,其中解密的输出正好是未加密的字节[8]

但是,当迁移到bytebuffer时,解密的bytebuffer是一个bytebuffer,其大小不是原始消息的大小,而是原始消息+填充,即填充定义为null的空间

有没有一种好方法可以使解密结果与输入相同

代码使用AES/CBC/PKCS5P转换


我暂时只限制了bytebuffer的输出,因为我无法找到一种方法来确定正确的输出大小<代码>输出.限制(输出.位置()).rewind().asReadOnlyBuffer()PKCS5填充的本质是将1到16个字节添加到明文中,从而添加到密文中。解密时,这些字节被删除,解密的长度必须更短。
//this gives the maximum size, including the possible padding, not the real size
int outputSize = cipher.getOutputSize(input.remaining());

ByteBuffer output = ByteBuffer.allocate(outputSize);

cipher.doFinal(input, output);

return output.rewind().asReadOnlyBuffer();