此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

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 类型公开以下成员。

  名称说明
公共方法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 继承。)
公共方法Clear释放由 CryptoStream 使用的所有资源。
公共方法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 继承。)
受保护的方法Finalize允许 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。 (从 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向流中的当前位置写一个字节,流中的位置向前移动一个字节。 (从 Stream 继承。)
返回顶部

  名称说明
公共扩展方法AsInputStream将 适用于 Windows 商店应用的 .NET 中的托管流转换到 Windows 运行时 中的输入流。 (由 WindowsRuntimeStreamExtensions 定义。)
公共扩展方法AsOutputStream将 适用于 Windows 商店应用的 .NET 中的托管流转换到 Windows 运行时 中的输出流。 (由 WindowsRuntimeStreamExtensions 定义。)
返回顶部

公共语言运行时使用面向流的设计进行加密。该设计的核心是 CryptoStream。实现 CryptoStream 的任何加密对象可以和实现 Stream 的任何对象链接起来,因此一个对象的流式处理输出可以馈送到另一个对象的输入。不需要分别存储中间结果(第一个对象的输出)。

通过调用 Close 方法完成 CryptoStream 对象的使用后,始终应该显式关闭该对象。这会刷新流并使所有剩余的数据块都被 CryptoStream 对象处理。但是,如果在调用 Close 方法前发生了异常,CryptoStream 对象可能会关闭。为确保 Close 方法始终被调用,请在 try/catch 语句的 finally 块中放置 Close 方法调用。

下面的示例演示如何在加密独立存储文件时使用 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) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

显示:
© 2015 Microsoft