0
J'ai la méthode de décryptage suivante qui semble bien fonctionner, sauf qu'elle ne renvoie que 16 octets au lieu de 32, si je l'ai regardé trop longtemps et ne peux pas comprendre ce que j'ai fait de mal. J'espère qu'un ensemble différent d'yeux aidera. Merci.Le déchiffrement renvoie 16 octets au lieu de 32, pourquoi?
private string Decrypt(string dataToDecrypt, string password, string salt)
{
//Generate a Key based on a Password, Salt and HMACSHA1 pseudo-random number generator
Rfc2898DeriveBytes rfc2898 = new Rfc2898DeriveBytes(password, Encoding.UTF8.GetBytes(salt));
//Create AES algorithm with 256 bit key and 128-bit block size
using (var aes = new AesManaged())
{
// These two values are hard coded in Silverlight
//aes.Mode = CipherMode.CBC;
//aes.Padding = PaddingMode.PKCS7;
aes.Key = rfc2898.GetBytes(aes.KeySize/8);
aes.IV = rfc2898.GetBytes(aes.BlockSize/8);
//Create Memory and Crypto Streams
using (var memoryStream = new MemoryStream())
{
using (var cryptoStream = new CryptoStream(memoryStream, aes.CreateDecryptor(), CryptoStreamMode.Write))
{
//Decrypt Data
byte[] data = Convert.FromBase64String(dataToDecrypt);
cryptoStream.Write(data, 0, data.Length);
// cryptoStream.FlushFinalBlock();
//Return Decrypted String
byte[] decryptBytes = memoryStream.ToArray();
string decrypted = Encoding.UTF8.GetString(decryptBytes, 0, decryptBytes.Length);
return decrypted;
} // using (cryptoStream = new CryptoStream(memoryStream, aes.CreateDecryptor(), CryptoStreamMode.Write))
} // using (memoryStream = new MemoryStream())
} // using (aes = new AesManaged())
} // string Decrypt(string dataToDecrypt, string password, string salt)
Salut Yann, merci pour l'entrée. Je ne peux pas définir BlockSize plus grand il ne le permet pas alors comment devrait-il aller décoder plus d'un bloc? –
@WillTartak: Cela dépend complètement du mode de chiffrement utilisé. BCE? CBC? CTR? XTR? CFB? Qu'est-ce que vous essayez d'accomplir qu'une API crypto de plus haut niveau (et bien conçue) ne fournit pas? –