CryptoStream クラス

2013/12/12

データ ストリームを暗号化方式にリンクするストリームを定義します。

System.Object
  System.IO.Stream
    System.Security.Cryptography.CryptoStream

Namespace:  System.Security.Cryptography
アセンブリ:  mscorlib (mscorlib.dll 内)

public class CryptoStream : Stream, 
	IDisposable

CryptoStream 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドCryptoStream暗号化の対象とするストリーム、実行する変換、およびストリームのモードを指定して、CryptoStream クラスの新しいインスタンスを初期化します。
このページのトップへ

  名前説明
パブリック プロパティCanRead現在の CryptoStream が読み取り可能かどうかを示す値を取得します。 (Stream.CanRead をオーバーライドします。)
パブリック プロパティCanSeek現在の CryptoStream 内でシークできるかどうかを示す値を取得します。 (Stream.CanSeek をオーバーライドします。)
パブリック プロパティCanTimeout現在のストリームがタイムアウトできるかどうかを判断する値を取得します。 (Stream から継承されます。)
パブリック プロパティCanWrite現在の CryptoStream が書き込み可能かどうかを示す値を取得します。 (Stream.CanWrite をオーバーライドします。)
パブリック プロパティLengthストリーム長をバイト単位で取得します。 (Stream.Length をオーバーライドします。)
パブリック プロパティPosition現在のストリーム内の位置を取得または設定します。 (Stream.Position をオーバーライドします。)
パブリック プロパティReadTimeoutストリームがタイムアウト前に読み取りを試行する期間を決定する値 (ミリ秒単位) を取得または設定します。 (Stream から継承されます。)
パブリック プロパティWriteTimeoutストリームがタイムアウト前に書き込みを試行する期間を決定する値 (ミリ秒単位) を取得または設定します。 (Stream から継承されます。)
このページのトップへ

  名前説明
パブリック メソッドBeginRead非同期の読み込み動作を開始します。 (Stream から継承されます。)
パブリック メソッドBeginWrite非同期の書き込み操作を開始します。 (Stream から継承されます。)
パブリック メソッドClearCryptoStream によって使用されているすべてのリソースを解放します。
パブリック メソッドClose現在のストリームを閉じ、現在のストリームに関連付けられているすべてのリソース (ソケット、ファイル ハンドルなど) を解放します。 (Stream から継承されます。)
パブリック メソッドCopyTo(Stream)現在のストリームからすべてのバイトを読み取り、宛先ストリームにそれらを書き込みます。 (Stream から継承されます。)
パブリック メソッドCopyTo(Stream, Int32)指定されたバッファー サイズを使用して、現在のストリームからすべてのバイトを読み取り、コピー先のストリームに書き込みます。 (Stream から継承されます。)
パブリック メソッドCopyToAsync(Stream)現在のストリームからバイトを非同期的に読み取り、別のストリームにそれらを書き込みます。 (Stream から継承されます。)
パブリック メソッドCopyToAsync(Stream, Int32)指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期的に読み取り、別のストリームに書き込みます。 (Stream から継承されます。)
パブリック メソッドCopyToAsync(Stream, Int32, CancellationToken)指定されたバッファー サイズとキャンセル トークンを使用して、現在のストリームからバイトを非同期的に読み取り、別のストリームに書き込みます。 (Stream から継承されます。)
パブリック メソッドDispose()Stream によって使用されているすべてのリソースを解放します。 (Stream から継承されます。)
プロテクト メソッドDispose(Boolean)CryptoStream によって使用されているアンマネージ リソースを解放し、オプションでマネージ リソースも解放します。 (Stream.Dispose(Boolean) をオーバーライドします。)
パブリック メソッドEndRead保留中の非同期読み取りが完了するまで待機します。 (Stream から継承されます。)
パブリック メソッドEndWrite非同期書き込み操作を終了します。 (Stream から継承されます。)
パブリック メソッドEquals(Object)指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。)
プロテクト メソッドFinalizeObject がガベージ コレクションで再利用される前に、Object がリソースを解放して他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッドFlushストリームに対応するすべてのバッファーをクリアし、バッファー内のデータを基になるデバイスに書き込みます。 (Stream.Flush() をオーバーライドします。)
パブリック メソッドFlushAsync()このストリームに対応するすべてのバッファーを非同期的にクリアし、バッファー内のデータを基になるデバイスに書き込みます。 (Stream から継承されます。)
パブリック メソッドFlushAsync(CancellationToken)このストリームに対応するすべてのバッファーを非同期的にクリアし、バッファー内のデータを基になるデバイスに書き込み、取り消し要求を監視します。 (Stream から継承されます。)
パブリック メソッドFlushFinalBlock基になるデータ ソースまたはリポジトリをバッファーの現在の状態に更新し、その後でバッファーをクリアします。
パブリック メソッドGetHashCode特定の型のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッドGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
プロテクト メソッドMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッドRead現在の CryptoStream からバイト シーケンスを読み取り、読み取ったバイト数の分だけストリーム内の位置を進めます。 (Stream.Read(Byte[], Int32, Int32) をオーバーライドします。)
パブリック メソッドReadAsync(Byte[], Int32, Int32)現在のストリームからバイト シーケンスを非同期的に読み取り、読み取ったバイト数だけストリーム内の位置を進めます。 (Stream から継承されます。)
パブリック メソッドReadAsync(Byte[], Int32, Int32, CancellationToken)現在のストリームからバイト シーケンスを非同期的に読み取り、読み取ったバイト数だけストリーム内の位置を進め、取り消し要求を監視します。 (Stream から継承されます。)
パブリック メソッドReadByteストリームから 1 バイトを読み取り、ストリーム内の位置を 1 バイト進めます。ストリームの末尾の場合は -1 を返します。 (Stream から継承されます。)
パブリック メソッドSeek常に NotSupportedException をスローします。 (Stream.Seek(Int64, SeekOrigin) をオーバーライドします。)
パブリック メソッドSetLength常に NotSupportedException をスローします。 (Stream.SetLength(Int64) をオーバーライドします。)
パブリック メソッドToString現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)
パブリック メソッドWriteバイト シーケンスを現在の CryptoStream に書き込み、書き込んだバイト数の分だけストリーム内の現在位置を進めます。 (Stream.Write(Byte[], Int32, Int32) をオーバーライドします。)
パブリック メソッドWriteAsync(Byte[], Int32, Int32)現在のストリームにバイト シーケンスを非同期的に書き込み、書き込んだバイト数だけストリーム内の現在位置を進めます。 (Stream から継承されます。)
パブリック メソッドWriteAsync(Byte[], Int32, Int32, CancellationToken)現在のストリームにバイト シーケンスを非同期的に書き込み、書き込んだバイト数だけストリーム内の現在位置を進め、取り消し要求を監視します。 (Stream から継承されます。)
パブリック メソッドWriteByteストリームの現在位置にバイトを書き込み、ストリームの位置を 1 バイトだけ進めます。 (Stream から継承されます。)
このページのトップへ

  名前説明
パブリック拡張メソッドAsInputStreamWindows ストア アプリ向け .NET のマネージ ストリームを Windows ランタイム の入力ストリームに変換します。 (WindowsRuntimeStreamExtensions によって定義されています。)
パブリック拡張メソッドAsOutputStreamWindows ストア アプリ向け .NET のマネージ ストリームを Windows ランタイム の出力ストリームに変換します。 (WindowsRuntimeStreamExtensions によって定義されています。)
このページのトップへ

共通言語ランタイムは、ストリーム指向の暗号デザインを採用しています。このデザインの中核となっているのが CryptoStream です。CryptoStream を実装するすべての暗号オブジェクトは、Stream を実装する任意のオブジェクトと一緒にチェインにまとめることができるため、あるオブジェクトからのストリーム出力を別のオブジェクトの入力に転送できます。このとき、中間結果 (最初のオブジェクトからの出力) を別個に格納する必要はありません。

CryptoStream オブジェクトを使用した場合は、必ず Close メソッドを呼び出して明示的に閉じる必要があります。これによりストリームがフラッシュされ、残りのすべてのデータ ブロックが CryptoStream オブジェクトによって処理されます。ただし、Close メソッドを呼び出す前に例外が発生した場合、CryptoStream オブジェクトが閉じないことがあります。Close メソッドが常に呼び出されるようにするには、Close メソッド呼び出しを、try/catch ステートメントの 最後のブロックに記述します。

次の例は、分離ストレージ ファイルを暗号化する場合の CryptoStream クラスの使用方法を示しています。このコード例は、AesManaged クラスのトピックで取り上げているコード例の一部分です。


static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key, byte[] IV)
{
    // Check arguments.
    if (cipherText == null || cipherText.Length <= 0)
        throw new ArgumentNullException("cipherText");
    if (Key == null || Key.Length <= 0)
        throw new ArgumentNullException("Key");
    if (IV == null || IV.Length <= 0)
        throw new ArgumentNullException("Key");

    // Declare the string used to hold
    // the decrypted text.
    string plaintext = null;

    // Create an AesManaged object
    // with the specified key and IV.
    using (AesManaged aesAlg = new AesManaged())
    {
        aesAlg.Key = Key;
        aesAlg.IV = IV;

        // Create a decrytor to perform the stream transform.
        ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

        // Create the streams used for decryption.
        using (MemoryStream msDecrypt = new MemoryStream(cipherText))
        {
            using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
            {
                using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                {

                    // Read the decrypted bytes from the decrypting stream
                    // and place them in a string.
                    plaintext = srDecrypt.ReadToEnd();
                }
            }
        }

    }

    return plaintext;

}


Windows Phone OS

サポート: 8.0, 7.1, 7.0

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

表示:
© 2014 Microsoft