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 :
Voilà le message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 String equery = QueryStringModule.Encrypt("ABC" ); System.Diagnostics.Debug.WriteLine(QueryStringModule.Decrypt(equery));
Et voici la fonction de décryption (c'est à la ligne 4 que ça coince) :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. '
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 !
Partager