【问题标题】:JAVA AES-encryption paddingJAVA AES-加密填充
【发布时间】: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");

或者我怎样才能做到这一点?

【问题讨论】:

标签: java aes padding


【解决方案1】:

没有填充方案可以支持你想要的。

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

【讨论】:

  • 您好 Ducan,是的,我认为我必须这样做 :) 非常感谢您的回答!
猜你喜欢
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
  • 2018-02-15
  • 1970-01-01
  • 2016-09-03
  • 2017-08-29
相关资源
最近更新 更多