정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

CryptoStream 클래스

2013-12-13

데이터 스트림을 암호화 변환에 연결하는 스트림을 정의합니다.

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

Namespace:  System.Security.Cryptography
어셈블리:  mscorlib(mscorlib.dll)

public class CryptoStream : Stream, 
	IDisposable

CryptoStream 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 메서드CryptoStream대상 데이터 스트림, 사용할 변환 및 스트림 모드를 사용하여 CryptoStream 클래스의 새 인스턴스를 초기화합니다.
맨 위

  이름설명
Public 속성CanRead현재 CryptoStream을 읽을 수 있는지 여부를 나타내는 값을 가져옵니다. (Stream.CanRead을(를) 재정의함)
Public 속성CanSeek현재 CryptoStream 내에서 검색할 수 있는지 여부를 나타내는 값을 가져옵니다. (Stream.CanSeek을(를) 재정의함)
Public 속성CanTimeout현재 스트림이 시간 초과될 수 있는지 여부를 결정하는 값을 가져옵니다. (Stream에서 상속됨)
Public 속성CanWrite현재 CryptoStream에 쓸 수 있는지 여부를 나타내는 값을 가져옵니다. (Stream.CanWrite을(를) 재정의함)
Public 속성Length스트림의 길이(바이트)를 가져옵니다. (Stream.Length을(를) 재정의함)
Public 속성Position현재 스트림 내의 위치를 가져오거나 설정합니다. (Stream.Position을(를) 재정의함)
Public 속성ReadTimeout스트림 읽기 시도가 만료되기 전까지 기다릴 시간을 결정하는 값을 밀리초 단위로 가져오거나 설정합니다. (Stream에서 상속됨)
Public 속성WriteTimeout스트림 쓰기 시도가 만료되기 전까지 기다릴 시간을 결정하는 값을 밀리초 단위로 가져오거나 설정합니다. (Stream에서 상속됨)
맨 위

  이름설명
Public 메서드BeginRead비동기 읽기 작업을 시작합니다. (Stream에서 상속됨)
Public 메서드BeginWrite비동기 쓰기 작업을 시작합니다. (Stream에서 상속됨)
Public 메서드ClearCryptoStream에서 사용하는 모든 리소스를 해제합니다.
Public 메서드Close현재 스트림을 닫고 현재 스트림과 관련된 소켓과 파일 핸들 등의 리소스를 모두 해제합니다. (Stream에서 상속됨)
Public 메서드CopyTo(Stream)현재 스트림에서 모든 바이트를 읽어 대상 스트림에 씁니다. (Stream에서 상속됨)
Public 메서드CopyTo(Stream, Int32)현재 스트림에서 모든 바이트를 읽어 지정된 버퍼 크기로 대상 스트림에 씁니다. (Stream에서 상속됨)
Public 메서드CopyToAsync(Stream)현재 스트림에서 비동기적으로 바이트를 읽은 후 다른 스트림에 씁니다. (Stream에서 상속됨)
Public 메서드CopyToAsync(Stream, Int32)현재 스트림에서 바이트를 비동기적으로 읽은 다음 지정된 버퍼 크기로 다른 스트림에 씁니다. (Stream에서 상속됨)
Public 메서드CopyToAsync(Stream, Int32, CancellationToken)현재 스트림에서 바이트를 비동기적으로 읽은 다음 지정된 버퍼 크기 및 취소 토큰을 사용하여 다른 스트림에 씁니다. (Stream에서 상속됨)
Public 메서드Dispose()Stream에서 사용하는 모든 리소스를 해제합니다. (Stream에서 상속됨)
Protected 메서드Dispose(Boolean)CryptoStream에서 사용하는 관리되지 않는 리소스를 해제하고, 관리되는 리소스를 선택적으로 해제할 수 있습니다. (Stream.Dispose(Boolean)을(를) 재정의함)
Public 메서드EndRead보류 중인 비동기 읽기가 완료되기를 기다립니다. (Stream에서 상속됨)
Public 메서드EndWrite비동기 쓰기 작업을 끝냅니다. (Stream에서 상속됨)
Public 메서드Equals(Object)지정한 Object가 현재 Object와 같은지 확인합니다. (Object에서 상속됨)
Protected 메서드Finalize가비지 수집기에서 Object를 회수하기 전에 개체가 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)
Public 메서드Flush이 스트림에 대한 모든 버퍼를 지우고 버퍼링된 모든 데이터가 내부 장치에 쓰여지도록 합니다. (Stream.Flush()을(를) 재정의함)
Public 메서드FlushAsync()이 스트림에 대한 모든 버퍼를 비동기적으로 지우고 버퍼링된 모든 데이터가 내부 장치에 쓰여지도록 합니다. (Stream에서 상속됨)
Public 메서드FlushAsync(CancellationToken)이 스트림에 대한 모든 버퍼를 비동기적으로 지우고 버퍼링된 모든 데이터가 내부 장치에 쓰여지도록 하고, 취소 요청을 모니터링합니다. (Stream에서 상속됨)
Public 메서드FlushFinalBlock내부 데이터 소스 또는 리포지토리에 버퍼의 현재 상태를 업데이트한 다음 해당 버퍼를 지웁니다.
Public 메서드GetHashCode특정 형식에 대한 해시 함수 역할을 합니다. (Object에서 상속됨)
Public 메서드GetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Protected 메서드MemberwiseClone현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Public 메서드Read현재 CryptoStream에서 바이트의 시퀀스를 읽은 다음 읽은 바이트 수만큼 스트림 내에서 위치를 앞으로 이동합니다. (Stream.Read(Byte[], Int32, Int32)을(를) 재정의함)
Public 메서드ReadAsync(Byte[], Int32, Int32)현재 스트림에서 바이트 시퀀스를 비동기적으로 읽고 읽은 바이트 수만큼 스트림에서 위치를 앞으로 이동합니다. (Stream에서 상속됨)
Public 메서드ReadAsync(Byte[], Int32, Int32, CancellationToken)현재 스트림에서 바이트 시퀀스를 비동기적으로 읽고, 읽은 바이트 수만큼 스트림에서 위치를 앞으로 이동하고, 취소 요청을 모니터링합니다. (Stream에서 상속됨)
Public 메서드ReadByte스트림에서 바이트를 읽고 스트림 내 위치를 한 바이트씩 앞으로 이동하거나 스트림 끝일 경우 -1을 반환합니다. (Stream에서 상속됨)
Public 메서드Seek모든 경우에 NotSupportedException을 발생합니다. (Stream.Seek(Int64, SeekOrigin)을(를) 재정의함)
Public 메서드SetLength모든 경우에 NotSupportedException을 발생합니다. (Stream.SetLength(Int64)을(를) 재정의함)
Public 메서드ToString현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)
Public 메서드Write현재 CryptoStream에 바이트의 시퀀스를 쓰고 이 스트림 내의 현재 위치를 쓰여진 바이트 수만큼 앞으로 이동합니다. (Stream.Write(Byte[], Int32, Int32)을(를) 재정의함)
Public 메서드WriteAsync(Byte[], Int32, Int32)현재 스트림에 바이트 시퀀스를 비동기적으로 쓰고 쓴 바이트 수만큼 이 스트림에서 현재 위치를 앞으로 이동합니다. (Stream에서 상속됨)
Public 메서드WriteAsync(Byte[], Int32, Int32, CancellationToken)현재 스트림에 바이트 시퀀스를 비동기적으로 쓰고, 쓴 바이트 수만큼 이 스트림에서 현재 위치를 앞으로 이동하고, 취소 요청을 모니터링합니다. (Stream에서 상속됨)
Public 메서드WriteByte스트림의 현재 위치에 바이트를 쓰고 스트림 내 위치를 1바이트씩 앞으로 이동합니다. (Stream에서 상속됨)
맨 위

  이름설명
Public 확장 메서드AsInputStreamWindows 스토어 앱용 .NET의 관리되는 스트림을 Windows 런타임의 입력 스트림으로 변환합니다. (WindowsRuntimeStreamExtensions에서 정의됨)
Public 확장 메서드AsOutputStreamWindows 스토어 앱용 .NET의 관리되는 스트림을 Windows 런타임의 출력 스트림으로 변환합니다. (WindowsRuntimeStreamExtensions에서 정의됨)
맨 위

공용 언어 런타임은 암호화에 스트림 지향 디자인을 사용합니다. 이 디자인의 핵심은 CryptoStream입니다. CryptoStream을 구현하는 암호화 개체는 Stream을 구현하는 개체와 연결할 수 있으므로 한 개체로부터의 스트리밍된 출력을 다른 개체에 입력할 수 있습니다. 중간 결과(첫째 개체의 출력)는 별도로 저장하지 않아도 됩니다.

CryptoStream 개체를 사용한 후에는 항상 Close 메서드를 호출하여 해당 개체를 명시적으로 닫아야 합니다. 명시적으로 개체를 닫으면 스트림이 플러시되고, 남아 있는 모든 데이터 블록이 CryptoStream 개체에서 처리됩니다. 하지만 Close 메서드를 호출하기 전에 예외가 발생하면 CryptoStream 개체가 닫히지 않습니다. Close 메서드가 항상 호출되도록 하려면 Close 메서드에 대한 호출을 try/catch 문의 finally 블록에 넣어야 합니다.

다음 예제에서는 격리된 저장소 파일을 암호화할 때 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

Windows Phone

이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 모든 인스턴스 멤버는 스레드로부터 안전하지 않을 수 있습니다.

표시: