FileStreamやMemoryStreamといったクラスは各種データソースからの読み書きを実装・抽象化したものですが、Stream派生クラスの一部には他のStreamのラッパーとして動作するものが存在します。 このようなStream派生クラスでは、データソースとなるStreamをラップし、Streamからの読み書きに際してエンコード/デコードや暗号化/復号化などといったデータフォーマットの変換を行うものや、読み書きするデータのバッファリングを行うなどの機能を追加します。 ラッパーとなるStreamでは、データソースに対する読み書き自体は下位のStreamに行わせ、自身は読み書きする側とデータソースの間に入り追加の処理を行います。

例えば次のコードでは、CryptoStreamを使ってデータをBASE64形式にエンコードした上でFileStreamに書き込んでいます。

CryptoStreamを使ってデータをBASE64エンコードしてFileStreamに書き込む
Imports System
Imports System.IO
Imports System.Security.Cryptography

Class Sample
  Shared Sub Main()
    ' ファイルsample.datを開き、書き込みアクセスを行うためのFileStreamを作成する
    Using fileStream As Stream = New FileStream("sample.dat", FileMode.Create, FileAccess.Write)
      ' BASE64への変換を行った上でfileStreamに書き込みを行うCryptoStreamを作成する
      Using base64Stream As Stream = New CryptoStream(fileStream, New ToBase64Transform(), CryptoStreamMode.Write)
        ' 書き込むデータが格納されているバイト配列
        Dim data() As Byte = New Byte() {&h41, &h42, &h43, &h44, &h45, &h46, &h47, &h48}

        ' データを書き込む
        ' CryptoStreamによりデータはBASE64にエンコードされ、次いで
        ' FileStreamによりエンコードされたデータがファイルに書き込まれる
        base64Stream.Write(data, 0, 8)
      End Using
    End Using
  End Sub
End Class
sample.datに書き込まれる内容
QUJDREVGR0g=

このように、CryptoStreamを使うことで他のStreamに対してBASE64エンコードを行う機能を追加することができます。

CryptoStreamはBASE64形式でのエンコード・デコード以外にも、様々な形式での暗号化やフォーマット変換を行うために使われます。