public class CryptoStream : System.IO.Stream { // Public Constructors public CryptoStream(System.IO.Stream stream, ICryptoTransform transform, CryptoStreamMode mode); // Public Instance Properties public override bool CanRead{get; // overrides System.IO.Stream public override bool CanSeek{get; // overrides System.IO.Stream public override bool CanWrite{get; // overrides System.IO.Stream public override long Length{get; // overrides System.IO.Stream public override long Position{set; get; // overrides System.IO.Stream // Public Instance Methods public void Clear( ); public override void Close( ); // overrides System.IO.Stream public override void Flush( ); // overrides System.IO.Stream public void FlushFinalBlock( ); public override int Read(in byte[ ] buffer, int offset, int count); // overrides System.IO.Stream public override long Seek(long offset, System.IO.SeekOrigin origin); // overrides System.IO.Stream public override void SetLength(long value); // overrides System.IO.Stream public override void Write(byte[ ] buffer, int offset, int count); // overrides System.IO.Stream // Protected Instance Methods protected virtual void Dispose(bool disposing); protected override void Finalize( ); // overrides object }
The CryptoStream class provides a stream-based model for encrypting and decrypting data using symmetric algorithms. The class constructor accepts an instance of System.IO.Stream, an implementation of the ICryptoTransform interface, and a value from the CryptoStreamMode enumeration.
If the CryptoStreamMode value is Read( ), then data is read from System.IO.Stream and passed to the ICryptoTransform for processing. If the CryptoStreamMode value is Write( ), then data is transformed by the ICryptoTransform implementation before being written to the System.IO.Stream. Implementations of ICryptoTransform can be created using the SymmetricAlgorithm.CreateEncryptor( ) and SymmetricAlgorithm.CreateDecryptor( ) methods.
This class extends System.IO.Stream, and therfore can be used as an argument in constructing a new instance of CryptoStream itself, allowing transformations to be chained together.