我正在开发一个对其输入文件进行加密的应用程序。
我的代码是用于加密文件的(文件大小从一些KB到4GB不等):
SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC");
byte[] block = new byte[8];
int i;
cipher.init(Cipher.ENCRYPT_MODE, key, ivSpec);
BufferedInputStream bIn=new BufferedInputStream(new ProgressMonitorInputStream(null,"Encrypting ...",new FileInputStream("input")));
CipherInputStream cIn = new CipherInputStream(bIn, cipher);
BufferedOutputStream bOut=new BufferedOutputStream(new FileOutputStream("output.enc"));
int ch;
while ((i = cIn.read(block)) != -1) {
bOut.write(block, 0, i);
}
cIn.close();
bOut.close();
我可以使其更优化(时间,IO,CPU)吗?
怎么样?
谢谢
最佳答案
这是一个复杂而困难的问题。首先,无论您做什么,都要加密4GB的文件。
像Hummingbird这样的轻量级加密算法将帮助您到达目的地-但是,您必须确保无论在何处使用AES,都不是绝对必要的。