Je crypte et décrypte les fichiers dans mon application, mais si le fichier est trop volumineux, cela prend quelques minutes, est-il possible d'améliorer la vitesse? ceci est le code de cryptage/décryptageComment améliorer la préformance du cryptage/décryptage pour les gros fichiers
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();
}
}
Je ne pense pas que vous pouvez faire beaucoup mieux. Le fichier doit être vraiment grand si cela prend quelques minutes. – Henry
Si la sécurité n'est pas un sujet de préoccupation ici, vous pouvez utiliser la clé symétrique de l'algorithme DES. Il est faible par rapport à AES, mais permettra d'améliorer les performances. – vijayinani
Conseil général: ** Toujours utiliser une chaîne de chiffrement entièrement qualifiée. ** 'Cipher.getInstance (" AES ");' peut entraîner des chiffrements différents en fonction du fournisseur de sécurité par défaut. Il en résulte très probablement '' "AES/ECB/PKCS5Padding" ', mais ce n'est pas obligatoire. Si cela change, vous perdrez la compatibilité entre les différentes JVM. Pour référence: [comportement Crypto/AES Java par défaut] (http://stackoverflow.com/q/6258047/1816580) –