gpt4 book ai didi

java - 如何提高大文件的加密/解密性能

转载 作者:行者123 更新时间:2023-12-01 08:49:05 25 4
gpt4 key购买 nike

我正在应用程序中加密和解密文件,但如果文件太大,则需要几分钟,是否可以提高速度?这是加密/解密代码

    private static void startCrypting(int cipherMode, String key, File inputFile,
File outputFile) throws MediaCodec.CryptoException {
try {
Key secretKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(cipherMode, secretKey);

FileInputStream inputStream = new FileInputStream(inputFile);
FileOutputStream outputStream = new FileOutputStream(outputFile);

CipherOutputStream out = new CipherOutputStream(outputStream, cipher);
byte[] buffer = new byte[8192];
int count;
while ((count = inputStream.read(buffer)) > 0) {
out.write(buffer, 0, count);
}

out.flush();
out.close();
outputStream.close();
inputStream.close();

} catch (NoSuchPaddingException | NoSuchAlgorithmException | InvalidKeyException | IOException ex) {
ex.printStackTrace();
}
}

最佳答案

简单。添加BufferedInputStream FileInputStream之间和 CipherInputStream解密,或者 BufferedOutputStream CipherOutputStream之间和 FileOutputStream加密时,酌情进行。这会将文件的 I/O 规范化为每次 8192 字节,而不是密码流可能执行的任何操作。

缓冲流的缓冲区大小并不重要:默认情况下为 8192,增加该值也没有什么坏处。

您还可以增加自己的缓冲区的大小。

关于java - 如何提高大文件的加密/解密性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42501609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com