Bonjour.
Je réalise une sécurisation de fichier (principalement des fichiers Word).
Pour ce faire je les crypt avec la méthode Triple des.
J'ai fait mes tests, tout va bien, ça tourne.
Par contre, lorsque j'ai commencé à tester avec des fichiers un peu plus gros
, le cryptage est d'une lenteur incroyable. (près de 1 min pour un fichier de 750 ko).
Je change de méthode en prenant Rijndael, qui est aparement plus rapide.
Avec une clef de 24 caractere j'arrive à 34 sec (ce qui est à mon gout beaucoup trop long).
Il me reste encore l'option du Rijndael avec une clef à 16 char, mais bon ... vu que la durée semble augmenté de façon exponentiel, je me dit que ça ne vas pas changer grand chose (surtout si je dois manipuler des fichier 5Mo par exemple).
Je me demande donc si je n'ai pas loupé quelque chose.
Le temps me semble vraiment beaucoup trop long pour un cryptage.
je vous link quand meme une des méthodes utilisé.
Le probleme ne pourrait il pas venir du fait que je fais du cryptage de fichier en fichier, alors que de passer par des tableau de byte par exemple serait plus rapide ?.. enfin je sais pas :/ mais j'aimerai bien avoir un élément de réponse car je pense que cela est vraiment beaucoup trop lent, et je me demande si le probleme vient de la méthode de crypto oubien d'ailleur :/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 public void EncryptData(String FileIn, String FileOut, byte[] Key, byte[] IV) { //Create the file streams to handle the input and output files. FileStream ofsi = new FileStream(FileIn, FileMode.Open, FileAccess.Read); FileStream ofso = new FileStream(FileOut, FileMode.Create, FileAccess.Write); ofso.SetLength(0); TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); CryptoStream encStream = new CryptoStream(ofso, tdes.CreateEncryptor(Key, IV), CryptoStreamMode.Write); RijndaelManaged tdes2 = new RijndaelManaged(); CryptoStream encStream2 = new CryptoStream(ofso, tdes.CreateEncryptor(Key,IV), CryptoStreamMode.Write); try { //Create variables to help with read and write. byte[] bin = new byte[100]; //This is intermediate storage for the encryption. long rdlen = 0; //This is the total number of bytes written. long totlen = ofsi.Length; //This is the total length of the input file. int len; //This is the number of bytes to be written at a time. Console.WriteLine("Encrypting..."); while (rdlen < totlen) { len = ofsi.Read(bin, 0, 100); encStream.Write(bin, 0, len); rdlen = rdlen + len; Console.WriteLine("{0} bytes processed", rdlen); } }
Partager