Java 7下面的Cipher.updateAAD()
如何使用API 19(Java 7)下面的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
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;
}