Descifrado AES GCM omitiendo la autenticación en JAVA
Tengo algunos datos cifrados AES / GCM y quería descifrarlos. Quiero descifrarlo sin pasar por la autenticación, ya que los datos no contienen información de autenticación (los datos están encriptados por una aplicación de terceros). Intenté descifrar con el paquete javax.crypto y siempre arroja un error de discordancia de etiquetas. ¿Hay alguna forma de evitar esta comprobación de etiquetas y descifrar datos? Los datos están encriptados con AES128 y están utilizando un vector de inicialización de 12 bytes.
Editar: obtuve una solución temporal para este problema. No estoy seguro si este es el método correcto.
Key key = new SecretKeySpec(hlsKey, "AES");
GCMParameterSpec gCMParameterSpec = new GCMParameterSpec(96, initialisationVector);
final Cipher c = Cipher.getInstance("AES/GCM/NoPadding", "BC");
c.init(Cipher.DECRYPT_MODE, key, gCMParameterSpec);
byte[] nodata = new byte[len * 2];
System.arraycopy(cipherText, 0, nodata, 0, len);
byte[] plaindata = new byte[len * 2];
try {
int decrypted_index = 0;
while (decrypted_index < len) {
int cp = c.update(nodata, decrypted_index, nodata.length - decrypted_index, plaindata, decrypted_index);//doFinal(nodata);
decrypted_index += cp;
}
if(decrypted_index>=len){
System.arraycopy(plaindata, 0, plainText, 0, len);
retvalue=1;
}
} catch (Exception e) {
e.printStackTrace();
}