0
내 앱에서 파일을 암호화 및 암호 해독 중이지만 파일 크기가 너무 크면 몇 분이면 속도를 향상시킬 수 있습니까? 이것은 암호화/암호 해독 코드입니다.대용량 파일의 암호화/복호화 성능 향상 방법
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();
}
}
나는 당신이 훨씬 더 잘할 수 있다고 생각하지 않습니다. 파일이 분만 소요되면 실제로 커야합니다. – Henry
보안이 여기에별로 신경 쓰지 않는다면 DES 알고리즘 대칭 키를 사용할 수 있습니다. AES에 비해 약하지만 성능은 향상됩니다. – vijayinani
일반적인 조언 : ** 항상 정규화 된 Cipher 문자열을 사용하십시오. **'Cipher.getInstance ("AES");'는 기본 보안 공급자에 따라 다른 암호가 발생할 수 있습니다. ''AES/ECB/PKCS5Padding ''이 될 확률이 높지만 그럴 필요는 없습니다. 변경되면 다른 JVM 간의 호환성이 손실됩니다. 참고 : [Java 기본 Crypto/AES 동작] (http://stackoverflow.com/q/6258047/1816580) –