Estoy trabajando en el cifrado de archivos. Puedo cifrar/descifrar los archivos pero me enfrenta a un problema de rendimiento importante. Cuando simplemente leo/escribo un archivo de video de 700 MB de tamaño, mi código tiene un rendimiento de alrededor de 27-28 MB/s. Pero cuando realizo el cifrado (actualmente estoy usando PBEWithMD5AndDES, que cambiaría más adelante), el código muestra velocidades de 9 MB/s. Aconseja en qué puedo mejorar.Asesorar sobre el rendimiento del cifrado de archivos en Java
Fragmento de código:
int c = 0, BUF_SIZE = 8192;
byte[] b = new byte[BUF_SIZE];
FileInputStream fis;
DataInputStream dis;
FileOutputStream fos;
DataOutputStream dos;
CipherOutputStream cos;
try {
// Create PBE parameter set
pbeParamSpec = new PBEParameterSpec(salt, iterationCount);
// Create PBE Cipher
Cipher pbeCipher = Cipher.getInstance(algorithm);
// get key
key = generateKeyFromPassword(password);
// Initialize PBE Cipher with key and parameters
pbeCipher.init(Cipher.ENCRYPT_MODE, key, pbeParamSpec);
fis = new FileInputStream(inFile);
dis = new DataInputStream(fis);
fos = new FileOutputStream(outFile);
dos = new DataOutputStream(fos);
cos = new CipherOutputStream(fos, pbeCipher);
while ((c = dis.read(b)) > 0) {
cos.write(b);
//dos.write(b);
}
fis.close();
dis.close();
//dos.close();
cos.close();
} catch (Exception e) {
e.printStackTrace();
}
Estadísticas sin cifrado:
velocidad es de alrededor de 27.97 MB/s
Hora Exacta = 25.02 seg
Tamaño Archivo = 700 MB
Estadísticas con encriptación:
La velocidad es alrededor de 9. 69 MB/s
Hora Exacta = 72.171 seg
Tamaño del archivo = 700 MB
¿Has probado una nueva clave de bloque, como AES? – CodesInChaos
¿Qué tipo de CPU tienes? Cuando se realiza correctamente, el cifrado AES debe superar los 30 MB/s, incluso en hardware antiguo. – CodesInChaos
Estoy trabajando en la CPU: intel i3 @ 2.27 GHz OS: Ubuntu 10.10 – ketan