Bonjour,
Je souhaiterai décrypter des fichiers zip via une appli C# un utilisant Rijndael.
Pour ça, j'ai bien une clé de décryptage 32 octets ainsi que l'IV qui va bien en 32 octets également.
Le décryptage se déroule bien en utilisant OpenSSL via l'invit' de commandes
J'ai donc créé une méthode me permettant de décrypter un fichier, en C#. Le problème, c'est qu'elle me retourne l'exception suivante : "Longueur des données à déchiffrer non valide."
Code : Sélectionner tout - Visualiser dans une fenêtre à part openssl enc -d -aes-128-cbc -K clé -iv IV -in C:\insertion\monfichier.zip -out C:\insertion\resultat.zip
Je dois avouer que j'ai du mal à voir d'où ça peut venir, je ne suis pas encore très à l'aise avec le cryptage/décryptage.
Voici ma méthode :
Vous pouvez me donner un petit coup de main ?
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
33
34
35
36
37
38
39
40
41
42
43
44
45 public static void decryptFile(string sKey, string sIv, string sPathCypheredFile, string sPathFile) { // -- Place la clé de déchiffrement dans un tableau d'octets // --------------------------------------------------------- byte[] key = Encoding.UTF8.GetBytes(sKey); // -- Place le vecteur d'initialisation dans un tableau d'octets // ------------------------------------------------------------- byte[] iv = Encoding.UTF8.GetBytes(sIv); try { // -- Filestream du nouveau fichier décrypté // ----------------------------------------- FileStream fsCrypt = new FileStream(sPathFile, FileMode.Create); RijndaelManaged rijndael = new RijndaelManaged(); rijndael.Padding = PaddingMode.Zeros; rijndael.BlockSize = 256; rijndael.Mode = CipherMode.CBC; rijndael.Key = key; rijndael.IV = iv; ICryptoTransform aesDecryptor = rijndael.CreateDecryptor(key, iv); CryptoStream cs = new CryptoStream(fsCrypt, aesDecryptor, CryptoStreamMode.Write); // -- FileStream du fichier crypté // ------------------------------- FileStream fsIn = new FileStream(sPathCypheredFile, FileMode.Open); int data; while ((data = fsIn.ReadByte()) != -1) cs.WriteByte((byte)data); cs.Close(); fsIn.Close(); fsCrypt.Close(); } catch (Exception ex) { throw new Exception("GTMCrypto.decryptFile : " + ex.Message + "\n", ex); } }![]()
Partager