【发布时间】:2013-09-25 20:27:07
【问题描述】:
我正在使用以下代码对我的程序中的一些数据进行加密:
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");
或者我怎样才能做到这一点?
【问题讨论】:
-
您好彼得,非常感谢您提供的链接。我会看看这个。我想我必须按照 Ducans 的方式行事。