java - 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();
解决方案
推荐阅读
- excel - VBA 图表表格格式 - 仅在从图表内部启动时才有效
- angular - CoreUI anguar 反应式表单验证
- deno - 将 Deno Bundler 与其他 JSX 插件一起使用
- c++ - 在继承的情况下创建 C++ 对象
- c++ - 计算复利时遇到问题
- r - 填写R中一列中的空白行
- microsoft-graph-api - 根据用户id获取用户活动
- cmis - CMIS session.getObjectByPath 文件名 - 特殊字符问题
- google-cloud-firestore - 在 Firebase 中使用计划的 CloudTasksClient
- ios - 在 resetAnalyticsData() 调用之前,Flutter 的 Firebase Analytics 不会跟踪事件