Comment décrypter une AES-256-CBC chaîne cryptée

Je suis nouveau en C# et j'ai vraiment besoin d'aide. J'ai besoin de crypter/décrypter une chaîne avec AES-256-CBC en C#, j'ai trouvé ceci pour crypter une chaîne de caractères:

    public static string EncryptString(string message, string KeyString, string IVString)
{
byte[] Key = ASCIIEncoding.UTF8.GetBytes(KeyString);
byte[] IV = ASCIIEncoding.UTF8.GetBytes(IVString);
string encrypted = null;
RijndaelManaged rj = new RijndaelManaged();
rj.Key = Key;
rj.IV = IV;
rj.Mode = CipherMode.CBC;
try
{
MemoryStream ms = new MemoryStream();
using (CryptoStream cs = new CryptoStream(ms, rj.CreateEncryptor(Key, IV), CryptoStreamMode.Write))
{
using (StreamWriter sw = new StreamWriter(cs))
{
sw.Write(message);
sw.Close();
}
cs.Close();
}
byte[] encoded = ms.ToArray();
encrypted = Convert.ToBase64String(encoded);
ms.Close();
}
catch (CryptographicException e)
{
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
return null;
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine("A file error occurred: {0}", e.Message);
return null;
}
catch (Exception e)
{
Console.WriteLine("An error occurred: {0}", e.Message);
}
finally
{
rj.Clear();
}
return encrypted;
}

J'ai essayé d'écrire un déchiffrer la fonction de base sur le code ci-dessus, le code suivant est ce que j'ai fait:

  //Decrypt a byte array into a byte array using a key and an IV 
private byte[] Decrypt(byte[] cipherData, byte[] Key, byte[] IV)
{
byte[] decryptedData;
//string plaintext = null;
//MemoryStream ms = new MemoryStream(cipherData);
RijndaelManaged alg = new RijndaelManaged();
alg.KeySize = 256;
alg.BlockSize = 128;
alg.Key = Key;
alg.IV = IV;
alg.Mode = CipherMode.CBC;
alg.Padding = PaddingMode.Zeros;
//Array.Copy(Key, 0, IV, 0, IV.Length);
ICryptoTransform decryptor = alg.CreateDecryptor(alg.Key, alg.IV);
using(MemoryStream ms = new MemoryStream(cipherData))
{
using (CryptoStream csDecrypt = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
using (StreamReader sw = new StreamReader(csDecrypt))
{
sw.ReadToEnd();
sw.Close();
}
csDecrypt.Close();
decryptedData = ms.ToArray();
}
}
//byte[] decryptedData = System.Text.Encoding.Unicode.GetBytes(plaintext);
return decryptedData; 
}

Mais c'est absurde, il ne peut pas déchiffrer quoi que ce soit. Je suis vraiment confus et ont besoin d'aide. Merci pour toute aide!

P/s: Merci de ne pas me donner d'autres similaires ont répondu à des questions, j'ai déjà jeter un oeil à eux. Leur fonction de crypter n'ont pas la même sortie, tout comme pour la fonction encrypt, alors que j'ai besoin de décrypter la chaîne qui DOIT être chiffrer par la fonction ci-dessus. J'ai deux ami qui a écrit décrypter la fonction en PHP et objective-C, qui correspondait avec la fonction encrypt, c'est mauvais pour les avoir à le faire à nouveau.

Votre cryptage donne un base64 chaîne de production, mais votre décrypter prend un tableau d'octets en entrée. Comment êtes-vous la conversion de votre chaîne en tableau d'octets avant de déchiffrer?

OriginalL'auteur Mee | 2013-11-30