Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以在Android上禁用AES/CCM中的消息身份验证检查?_Java_Android_Encryption_Aes - Fatal编程技术网

Java 是否可以在Android上禁用AES/CCM中的消息身份验证检查?

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

我正在编写一些接收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[] decrypted = out.doFinal(encrypted);

执行此操作时,我的输入失败,因为未将8字节的MAC追加到
加密的
数组的末尾。错误消息为:
加密失败:CCM中的MAC签入失败
。有没有一种方法可以使用Java库设置解密,这样就不会出现MAC?不幸的是,我无法控制远程设备发送给我的数据格式。

CCM是带MAC的CBC。如果您不想使用身份验证字段,只需使用AES/CBC。

这是我已经尝试过的,但AES/CBC坚持使用固定的IV大小,而AES/CCM不这样做。我需要花时间阅读不同的加密标准是如何工作的。