¿Cómo descifrar ByteArrayOutputStream en Java?
Estoy intentando descifrar un archivo descargado como ByteArrayOutputStream desde Azure Storage.
Tengo un stream de tipo ByteArrayOutputStream.
¿Cómo puedo descifrarlo y devolver ByteArrayOutputStream descifrado?
He intentado usar CipherOutputStream, pero no estoy seguro de cómo usarlo.
A continuación se muestra el código (fragmento) que estoy usando para cifrar el archivo antes de cargarlo:
cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(INITIALIZATIO_VECTOR.getBytes(“UTF-8”)));
blob.upload(new CipherInputStream(file.getInputStream(), cipher), file.getSize());
A continuación se muestra mi código:
public ByteArrayOutputStream download(String fileName, Long id) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
try {
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding", "SunJCE");
SecretKeySpec key = new SecretKeySpec(encrypkey.getBytes("UTF-8"), "AES");
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(INITIALIZATIO_VECTOR.getBytes("UTF-8")));
CipherOutputStream output = null;
container = getBlobClient().getContainerReference("container" + id.toString());
CloudBlockBlob blob = container.getBlockBlobReference(fileName);
if (blob.exists()) {
blob.download(os);
//output = new CipherOutputStream(outputStream, cipher);
} else {
logger.info("El archivo no existe en el contenedor de Azure");
}
} catch (StorageException e) {
logger.error("StorageException : {}" + e.getLocalizedMessage(), e);
} catch (Exception e) {
logger.error("Excepción : {}" + e.getLocalizedMessage(), e);
}
return os;
}
davy.ai
Para descifrar el archivo, puedes usar la clase
CipherOutputStream
. Puedes utilizar el mismo objetoCipher
que utilizaste para cifrar el archivo, pero debes establecer el modo enDECRYPT_MODE
. Luego puedes usar elCipherOutputStream
para escribir los datos descifrados en elByteArrayOutputStream
.A continuación, se muestra un ejemplo de cómo usar el
CipherOutputStream
:“`