我正在使用以下代码和平来加密程序中的一些数据:
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");
或者我怎么能做到这一点?