Salut !


J'essaie d'encrypter un querystring avec la méthode rijndael. Mais il y a un os...

Test : Lorsque j'exécute ces 2 lignes (une bête encryption suivie immédiatement d'une décryption), ça bugue :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
    String equery = QueryStringModule.Encrypt("ABC" );
    System.Diagnostics.Debug.WriteLine(QueryStringModule.Decrypt(equery));
Voilà le message d'erreur :

System.FormatException : 'L'entrée n'est pas une chaîne Base 64 valide, car elle contient un caractère non-Base 64, plus de deux caractères de remplissage ou un caractère non conforme parmi les caractères de remplissage. '
Et voici la fonction de décryption (c'est à la ligne 4 que ça coince) :

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
    public static string Decrypt(string inputText)
      {
        RijndaelManaged rijndaelCipher = new RijndaelManaged();
        byte[] encryptedData = Convert.FromBase64String(inputText);
        PasswordDeriveBytes secretKey = new PasswordDeriveBytes(ENCRYPTION_KEY, SALT);
        using (ICryptoTransform decryptor = rijndaelCipher.CreateDecryptor(secretKey.GetBytes(32), secretKey.GetBytes(16)))
        {
          using (MemoryStream memoryStream = new MemoryStream(encryptedData))
          {
            using (CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read))
            {
              byte[] plainText = new byte[encryptedData.Length];
              int decryptedCount = cryptoStream.Read(plainText, 0, plainText.Length);
              return Encoding.Unicode.GetString(plainText, 0, decryptedCount);
            }
          }
        }
      }

Si vous voyez pourquoi ça bugue, je suis toute ouïe !