Creare un MemoryStream
, passarlo a CryptoStream
per la scrittura. Voglio il CryptoStream
da crittografare e lasciare aperto il MemoryStream
per poi leggere in qualcos'altro. Ma non appena CryptoStream
viene smaltito, dispone anche di MemoryStream
.Un CryptoStream può lasciare aperto il flusso di base?
Can CryptoStream
lasciare la base MemoryStream
aprire in qualche modo?
using (MemoryStream scratch = new MemoryStream())
{
using (AesManaged aes = new AesManaged())
{
// <snip>
// Set some aes parameters, including Key, IV, etc.
// </snip>
ICryptoTransform encryptor = aes.CreateEncryptor();
using (CryptoStream myCryptoStream = new CryptoStream(scratch, encryptor, CryptoStreamMode.Write))
{
myCryptoStream.Write(someByteArray, 0, someByteArray.Length);
}
}
// Here, I'm still within the MemoryStream block, so I expect
// MemoryStream to still be usable.
scratch.Position = 0; // Throws ObjectDisposedException
byte[] scratchBytes = new byte[scratch.Length];
scratch.Read(scratchBytes,0,scratchBytes.Length);
return Convert.ToBase64String(scratchBytes);
}
Perché stai utilizzando gli stream in primo luogo? Basta chiamare 'encryptor.TransformFinalBlock' sui byte di input. Gli stream sono utili soprattutto per la crittografia/decrittografia incrementale, ma non quando i dati sono disponibili allo stesso tempo. – CodesInChaos