public Stream Encode(string key, Stream dataStream) { SymmetricAlgorithm provider = null; ICryptoTransform encryptor = null; Stream stream = null; try { provider = GetCryptoProvider(null); encryptor = provider.CreateEncryptor(); stream = new CryptoStream(dataStream, encryptor, CryptoStreamMode.Write); var disposingStream = stream.WriteSalt(key).DisposeTogetherWith(provider, encryptor); return(disposingStream); } catch { try { if (provider != null) { provider.Dispose(); } } catch { } try { if (encryptor != null) { encryptor.Dispose(); } } catch { } try { if (stream != null) { stream.Dispose(); } } catch { } throw; } }