public Stream Decode(string key, Stream dataStream) { SymmetricAlgorithm provider = null; ICryptoTransform decryptor = null; Stream stream = null; try { provider = GetCryptoProvider(null); decryptor = provider.CreateDecryptor(); stream = new CryptoStream(dataStream, decryptor, CryptoStreamMode.Read); return(stream.ReadSalt(key).DisposeTogetherWith(provider, decryptor)); } catch { try { if (provider != null) { provider.Dispose(); } } catch { } try { if (decryptor != null) { decryptor.Dispose(); } } catch { } try { if (stream != null) { stream.Dispose(); } } catch { } throw; } }