Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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 7下面的Cipher.updateAAD()_Java_Android - Fatal编程技术网

Java 7下面的Cipher.updateAAD()

Java 7下面的Cipher.updateAAD(),java,android,Java,Android,如何使用API 19(Java 7)下面的cipher.updateAAD()?我知道我可以使用BouncyCastle,但它不提供AEAD加密和解密的后端口。有第三方图书馆吗?我使用的是AES/GCM/NoPadding实际上BouncyCastle提供了我需要的所有东西,包括AAD。对于AES/GCM,我们可以使用以下方法: static byte[] gcmDecrypt(byte[] ct, byte[] key, byte[] iv, byte[] aad) throws Ex

如何使用API 19(Java 7)下面的
cipher.updateAAD()
?我知道我可以使用BouncyCastle,但它不提供AEAD加密和解密的后端口。有第三方图书馆吗?我使用的是AES/GCM/NoPadding

实际上BouncyCastle提供了我需要的所有东西,包括AAD。对于AES/GCM,我们可以使用以下方法:

    static byte[] gcmDecrypt(byte[] ct, byte[] key, byte[] iv, byte[] aad) throws Exception {
        AEADParameters parameters = new AEADParameters(new KeyParameter(key), 128, iv, aad);
        GCMBlockCipher gcmEngine = new GCMBlockCipher(new AESFastEngine());
        gcmEngine.init(false, parameters);
        byte[] pt = new byte[gcmEngine.getOutputSize(ct.length)];
        int len = gcmEngine.processBytes(ct, 0, ct.length, pt, 0);
        gcmEngine.doFinal(pt, len);
        return pt;
    }

    static byte[] gcmEncrypt(byte[] pt, byte[] key, byte[] iv, byte[] aad) throws Exception {
        AEADParameters parameters = new AEADParameters(new KeyParameter(key), 128, iv, aad);
        GCMBlockCipher gcmEngine = new GCMBlockCipher(new AESFastEngine());
        gcmEngine.init(true, parameters);
        byte[] ct = new byte[gcmEngine.getOutputSize(pt.length)];
        int len = gcmEngine.processBytes(pt, 0, pt.length, ct, 0);
        gcmEngine.doFinal(ct, len);
        return ct;
    }