Saltar al contenido

Cifrar un archivo grande con AES usando JAVA

Necesitamos tu apoyo para difundir nuestras reseñas en referencia a las ciencias informáticas.

Solución:

Ni siquiera intente leer archivos grandes completos en la memoria. Cifre un búfer a la vez. Simplemente haga el bucle de copia estándar con una inicialización adecuada CipherOutputStream envuelto alrededor del FileOutputStream. Puede usar esto para todos los archivos, no es necesario crear un caso especial con él. Utilice un búfer de 8k o más.

EDITAR El ‘bucle de copia estándar’ en Java es el siguiente:

byte[] buffer = new byte[8192];
int count;
while ((count = in.read(buffer)) > 0)

    out.write(buffer, 0, count);

donde en este caso out = new CipherOutputStream(new FileOutputStream(selectedFile), cipher).

También puede simplificar el proceso aún más usando Encryptor4j que yo soy autor: https://github.com/martinwithaar/Encryptor4j

File srcFile = new File("original.zip");
File destFile = new File("original.zip.encrypted");
String password = "mysupersecretpassword";
FileEncryptor fe = new FileEncryptor(password);
fe.encrypt(srcFile, destFile);

Esta biblioteca utiliza cifrado de transmisión por lo que no causará OutOfMemoryError incluso con archivos grandes. Además, en lugar de utilizar contraseñas, puede utilizar las suyas Key también.

Vea el ejemplo en la página de Github aquí: https://github.com/martinwithaar/Encryptor4j#file-encryption

Comentarios y calificaciones del tutorial

Si estás de acuerdo, puedes dejar un escrito acerca de qué te ha parecido esta división.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *