我正在开发一个对其输入文件进行加密的应用程序。
我的代码是用于加密文件的(文件大小从一些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,都不是绝对必要的。

08-05 17:47