Problème avec l'encryption/décryption
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:
1 2
| String equery = QueryStringModule.Encrypt("ABC" );
System.Diagnostics.Debug.WriteLine(QueryStringModule.Decrypt(equery)); |
Voilà le message d'erreur :
Citation:
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:
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 ! ;)