Java 是否可以在Android上禁用AES/CCM中的消息身份验证检查?
我正在编写一些接收AES/CCM加密数据包但不附加MAC的代码。这在Java中给我带来了一个问题,因为库希望MAC在那里。以下是执行解密的代码片段:Java 是否可以在Android上禁用AES/CCM中的消息身份验证检查?,java,android,encryption,aes,Java,Android,Encryption,Aes,我正在编写一些接收AES/CCM加密数据包但不附加MAC的代码。这在Java中给我带来了一个问题,因为库希望MAC在那里。以下是执行解密的代码片段: javax.crypto.Cipher out = Cipher.getInstance("AES/CCM/NoPadding", "BC"); out.init(Cipher.DECRYPT_MODE, key, new javax.crypto.spec.IvParameterSpec.IvParameterSpec(nonce)); byte
javax.crypto.Cipher out = Cipher.getInstance("AES/CCM/NoPadding", "BC");
out.init(Cipher.DECRYPT_MODE, key, new javax.crypto.spec.IvParameterSpec.IvParameterSpec(nonce));
byte[] decrypted = out.doFinal(encrypted);
执行此操作时,我的输入失败,因为未将8字节的MAC追加到
加密的
数组的末尾。错误消息为:加密失败:CCM中的MAC签入失败
。有没有一种方法可以使用Java库设置解密,这样就不会出现MAC?不幸的是,我无法控制远程设备发送给我的数据格式。CCM是带MAC的CBC。如果您不想使用身份验证字段,只需使用AES/CBC。这是我已经尝试过的,但AES/CBC坚持使用固定的IV大小,而AES/CCM不这样做。我需要花时间阅读不同的加密标准是如何工作的。