我使用以下代码来加密我的程序中的一些数据:
cipher = Cipher.getInstance("AES/CBC/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(rawCipherKey, "AES"), new IvParameterSpec(rawCipherIV));然后用另一种方法:
try {
cipher.doFinal(buffer, 0, len, encryptedBuffer, 12);
} catch (Exception e) {
throw new RuntimeException(e);
}doFinal正在抛出一个异常:
java.lang.RuntimeException: javax.crypto.IllegalBlockSizeException: data not block size aligned但这是,而不是问题,我理解原因。
我得到了对数据进行加密的以下说明:
加密数据,但只完成16个字节块,其余部分保持未加密。
谁能告诉我还有别的办法呢?对于
Cipher.getInstance("AES/CBC/DO_PADDING_BUT_ONLY_16_BYTES_AND_LEAVE_REST_UNENCRYPTED");或者我怎么能做到这一点?
发布于 2013-09-20 12:37:59
没有支持您所需内容的填充方案。
相反,在加密之前对数据进行剖析。获取尽可能多的可用数据块,并在追加其余明文之前对其进行加密。
https://stackoverflow.com/questions/18916945
复制相似问题