Tôi đang thực hiện một số công việc liên quan đến mã hóa tệp. Tôi có thể mã hóa/giải mã các tệp nhưng phải đối mặt với một vấn đề hiệu suất lớn. Khi tôi chỉ đọc/ghi một tệp video có dung lượng 700 MB, mã của tôi hoạt động vào khoảng 27-28 MB/s. Nhưng khi tôi thực hiện mã hóa (tôi hiện đang sử dụng PBEWithMD5AndDES, mà tôi sẽ thay đổi sau này) mã cho thấy tốc độ 9 MB/s. Vui lòng cho biết tôi có thể cải thiện ở đâu.Tư vấn về hiệu suất mã hóa tệp trong Java
Đoạn mã:
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();
}
Thống kê mà không cần mã hóa:
Speed là khoảng 27,97 MB/s
chính xác Thời gian = 25.02 giây
Kích File = 700 MB
Thống kê với mã hóa:
Tốc độ là khoảng 9. 69 MB/s
chính xác Thời gian = 72,171 giây
Kích File = 700 MB
Bạn đã thử một cypher khối khác, chẳng hạn như AES? – CodesInChaos
Bạn có loại CPU nào? Khi thực hiện đúng mã hóa AES sẽ vượt quá 30MB/s ngay cả trên phần cứng cũ hơn. – CodesInChaos
Tôi đang làm việc trên CPU: intel i3 @ 2,27 GHz Hệ điều hành: Ubuntu 10.10 – ketan