首页 > 解决方案 > Java aes解密字节缓冲区,包括填充为空字节

问题描述

我正在尝试将加密字节 [] 的加密代码迁移到字节缓冲区,以便更好地与另一个 api 集成。

之前使用 byte[8] 的代码可以正常工作,其中解密的输出正是未加密的 byte[8]。

但是,当迁移到 bytebuffer 时,解密后的 bytebuffer 不是原始消息的大小,而是原始消息 + padding,即 padding 定义为 null 的空间。

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

该代码使用转换AES/CBC/PKCS5Padding

//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();

标签: javaencryptionaes

解决方案


推荐阅读