首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAVA AES加密填充

JAVA AES加密填充
EN

Stack Overflow用户
提问于 2013-09-20 12:34:25
回答 1查看 2.8K关注 0票数 0

我使用以下代码来加密我的程序中的一些数据:

代码语言:javascript
复制
cipher = Cipher.getInstance("AES/CBC/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(rawCipherKey, "AES"), new IvParameterSpec(rawCipherIV));

然后用另一种方法:

代码语言:javascript
复制
try {
   cipher.doFinal(buffer, 0, len, encryptedBuffer, 12);
} catch (Exception e) {
   throw new RuntimeException(e);
}

doFinal正在抛出一个异常:

代码语言:javascript
复制
java.lang.RuntimeException: javax.crypto.IllegalBlockSizeException: data not block size aligned

但这是,而不是问题,我理解原因。

我得到了对数据进行加密的以下说明:

加密数据,但只完成16个字节块,其余部分保持未加密。

谁能告诉我还有别的办法呢?对于

代码语言:javascript
复制
Cipher.getInstance("AES/CBC/DO_PADDING_BUT_ONLY_16_BYTES_AND_LEAVE_REST_UNENCRYPTED");

或者我怎么能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-20 12:37:59

没有支持您所需内容的填充方案。

相反,在加密之前对数据进行剖析。获取尽可能多的可用数据块,并在追加其余明文之前对其进行加密。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18916945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档