CryptoStream Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan aliran yang menautkan aliran data ke transformasi kriptografi.
public ref class CryptoStream : System::IO::Stream
public class CryptoStream : System.IO.Stream
[System.Runtime.InteropServices.ComVisible(true)]
public class CryptoStream : System.IO.Stream
type CryptoStream = class
inherit Stream
interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type CryptoStream = class
inherit Stream
interface IDisposable
Public Class CryptoStream
Inherits Stream
- Warisan
- Warisan
- Atribut
- Penerapan
Contoh
Contoh berikut menunjukkan cara menggunakan CryptoStream untuk mengenkripsi string. Metode ini menggunakan kelas Aes dengan vektor Key dan inisialisasi yang ditentukan (IV).
using System;
using System.IO;
using System.Security.Cryptography;
class AesExample
{
public static void Main()
{
try
{
string original = "Here is some data to encrypt!";
// Create a new instance of the Aes class.
// This generates a new key and initialization vector (IV).
using (Aes myAes = Aes.Create())
{
// Encrypt the string to an array of bytes.
byte[] encrypted = EncryptStringToBytes(original, myAes.Key, myAes.IV);
// Decrypt the bytes to a string.
string roundtrip = DecryptStringFromBytes(encrypted, myAes.Key, myAes.IV);
// Display the original data and the decrypted data.
Console.WriteLine("Original: {0}", original);
Console.WriteLine("Round trip: {0}", roundtrip);
}
}
catch (Exception e)
{
Console.WriteLine("Error: {0}", e.Message);
}
}
static byte[] EncryptStringToBytes(string plainText, byte[] Key, byte[] IV)
{
// Check arguments.
if (plainText == null || plainText.Length <= 0)
throw new ArgumentNullException(nameof(plainText));
if (Key == null || Key.Length <= 0)
throw new ArgumentNullException(nameof(Key));
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException(nameof(IV));
byte[] encrypted;
// Create a Aes object with the specified key and IV.
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Key;
aesAlg.IV = IV;
// Create an encryptor to perform the stream transform.
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
// Create the streams used for encryption.
using (MemoryStream msEncrypt = new())
{
using (CryptoStream csEncrypt = new(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new(csEncrypt))
{
// Write all data to the stream.
swEncrypt.Write(plainText);
}
encrypted = msEncrypt.ToArray();
}
}
}
// Return the encrypted bytes from the memory stream.
return encrypted;
}
static string DecryptStringFromBytes(byte[] cipherText, byte[] Key, byte[] IV)
{
// Check arguments.
if (cipherText == null || cipherText.Length <= 0)
throw new ArgumentNullException(nameof(cipherText));
if (Key == null || Key.Length <= 0)
throw new ArgumentNullException(nameof(Key));
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException(nameof(IV));
// Declare the string used to hold the decrypted text.
string plaintext = null;
// Create a Aes object with the specified key and IV.
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Key;
aesAlg.IV = IV;
// Create a decryptor to perform the stream transform.
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
// Create the streams used for decryption.
using (MemoryStream msDecrypt = new(cipherText))
{
using (CryptoStream csDecrypt = new(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new(csDecrypt))
{
// Read the decrypted bytes from the decrypting stream
// and place them in a string.
plaintext = srDecrypt.ReadToEnd();
}
}
}
}
return plaintext;
}
}
Imports System.IO
Imports System.Security.Cryptography
Class AesExample
Public Shared Sub Main()
Try
Dim original As String = "Here is some data to encrypt!"
' Create a new instance of the Aes class.
' This generates a new key and initialization vector (IV).
Using myAes = Aes.Create()
' Encrypt the string to an array of bytes.
Dim encrypted As Byte() = EncryptStringToBytes(original, myAes.Key, myAes.IV)
' Decrypt the bytes to a string.
Dim roundtrip As String = DecryptStringFromBytes(encrypted, myAes.Key, myAes.IV)
'Display the original data and the decrypted data.
Console.WriteLine("Original: {0}", original)
Console.WriteLine("Round Trip: {0}", roundtrip)
End Using
Catch e As Exception
Console.WriteLine("Error: {0}", e.Message)
End Try
End Sub
Shared Function EncryptStringToBytes(ByVal plainText As String, ByVal Key() As Byte, ByVal IV() As Byte) As Byte()
' Check arguments.
If plainText Is Nothing OrElse plainText.Length <= 0 Then
Throw New ArgumentNullException(NameOf(plainText))
End If
If Key Is Nothing OrElse Key.Length <= 0 Then
Throw New ArgumentNullException(NameOf(Key))
End If
If IV Is Nothing OrElse IV.Length <= 0 Then
Throw New ArgumentNullException(NameOf(IV))
End If
Dim encrypted() As Byte
' Create an Aes object with the specified key and IV.
Using aesAlg = Aes.Create()
aesAlg.Key = Key
aesAlg.IV = IV
' Create an encryptor to perform the stream transform.
Dim encryptor As ICryptoTransform = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV)
' Create the streams used for encryption.
Using msEncrypt As New MemoryStream()
Using csEncrypt As New CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)
Using swEncrypt As New StreamWriter(csEncrypt)
' Write all data to the stream.
swEncrypt.Write(plainText)
End Using
encrypted = msEncrypt.ToArray()
End Using
End Using
End Using
' Return the encrypted bytes from the memory stream.
Return encrypted
End Function 'EncryptStringToBytes
Shared Function DecryptStringFromBytes(
ByVal cipherText() As Byte,
ByVal Key() As Byte,
ByVal IV() As Byte) As String
' Check arguments.
If cipherText Is Nothing OrElse cipherText.Length <= 0 Then
Throw New ArgumentNullException(NameOf(cipherText))
End If
If Key Is Nothing OrElse Key.Length <= 0 Then
Throw New ArgumentNullException(NameOf(Key))
End If
If IV Is Nothing OrElse IV.Length <= 0 Then
Throw New ArgumentNullException(NameOf(IV))
End If
' Declare the string used to hold the decrypted text.
Dim plaintext As String = Nothing
' Create an Aes object with the specified key and IV.
Using aesAlg = Aes.Create()
aesAlg.Key = Key
aesAlg.IV = IV
' Create a decryptor to perform the stream transform.
Dim decryptor As ICryptoTransform = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV)
' Create the streams used for decryption.
Using msDecrypt As New MemoryStream(cipherText)
Using csDecrypt As New CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)
Using srDecrypt As New StreamReader(csDecrypt)
' Read the decrypted bytes from the decrypting stream
' and place them in a string.
plaintext = srDecrypt.ReadToEnd()
End Using
End Using
End Using
End Using
Return plaintext
End Function 'DecryptStringFromBytes
End Class
Keterangan
Runtime bahasa umum menggunakan desain berorientasi aliran untuk kriptografi. Inti dari desain ini adalah CryptoStream. Setiap objek kriptografi yang mengimplementasikan CryptoStream dapat ditautkan bersama dengan objek apa pun yang mengimplementasikan Stream, sehingga output yang dialirkan dari satu objek dapat dimasukkan ke dalam input objek lain. Hasil perantara (output dari objek pertama) tidak perlu disimpan secara terpisah.
Penting
Dalam .NET 6 dan versi yang lebih baru, ketika Stream.Read
atau Stream.ReadAsync
dipanggil dengan buffer panjang N
, operasi selesai ketika setidaknya 1 byte telah dibaca dari aliran, atau aliran yang mendasar yang dibungkusnya mengembalikan 0 dari panggilan ke Read
, menunjukkan tidak ada lagi data yang tersedia. Sebelum .NET 6, Stream.Read
dan Stream.ReadAsync
tidak kembali sampai semua byte N
dibaca dari aliran atau aliran yang mendasar mengembalikan 0 dari panggilan ke Read
. Jika kode Anda mengasumsikan metode Read
tidak akan kembali sampai semua byte N
dibaca, kode tersebut dapat gagal membaca semua konten. Untuk informasi selengkapnya, lihat Bacaan parsial dan nol-byte di aliran.
Anda harus selalu secara eksplisit menutup objek CryptoStream setelah selesai menggunakannya dengan memanggil metode Clear. Melakukannya membersihkan aliran yang mendasar dan menyebabkan semua blok data yang tersisa diproses oleh objek CryptoStream. Namun, jika pengecualian terjadi sebelum Anda memanggil metode Close, objek CryptoStream mungkin tidak ditutup. Untuk memastikan bahwa metode Close selalu dipanggil, lakukan panggilan Anda ke metode Clear dalam blok finally
pernyataan try
/catch
.
Jenis ini mengimplementasikan antarmuka IDisposable. Setelah selesai menggunakan jenis , Anda harus membuangnya baik secara langsung atau tidak langsung dengan memanggil metode Clear, yang pada gilirannya memanggil implementasi IDisposable. Untuk membuang jenis secara langsung, panggil metode Clear dalam blok try
/catch
. Untuk membuangnya secara tidak langsung, gunakan konstruksi bahasa seperti using
(dalam C#) atau Using
(di Visual Basic).
Konstruktor
CryptoStream(Stream, ICryptoTransform, CryptoStreamMode) |
Menginisialisasi instans baru kelas CryptoStream dengan aliran data target, transformasi yang akan digunakan, dan mode aliran. |
CryptoStream(Stream, ICryptoTransform, CryptoStreamMode, Boolean) |
Menginisialisasi instans baru kelas CryptoStream. |
Properti
CanRead |
Mendapatkan nilai yang menunjukkan apakah CryptoStream saat ini dapat dibaca. |
CanSeek |
Mendapatkan nilai yang menunjukkan apakah Anda dapat mencari dalam CryptoStreamsaat ini. |
CanTimeout |
Mendapatkan nilai yang menentukan apakah aliran saat ini dapat kehabisan waktu. (Diperoleh dari Stream) |
CanWrite |
Mendapatkan nilai yang menunjukkan apakah CryptoStream saat ini dapat ditulis. |
HasFlushedFinalBlock |
Mendapatkan nilai yang menunjukkan apakah blok buffer akhir telah ditulis ke aliran yang mendasar. |
Length |
Mendapatkan panjang byte aliran. |
Position |
Mendapatkan atau mengatur posisi dalam aliran saat ini. |
ReadTimeout |
Mendapatkan atau menetapkan nilai, dalam milidetik, yang menentukan berapa lama aliran akan mencoba membaca sebelum waktu habis. (Diperoleh dari Stream) |
WriteTimeout |
Mendapatkan atau menetapkan nilai, dalam milidetik, yang menentukan berapa lama aliran akan mencoba menulis sebelum waktu habis. (Diperoleh dari Stream) |
Metode
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Memulai operasi baca asinkron. (Pertimbangkan untuk menggunakan ReadAsync sebagai gantinya.) |
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Memulai operasi baca asinkron. (Pertimbangkan untuk menggunakan ReadAsync(Byte[], Int32, Int32) sebagai gantinya.) (Diperoleh dari Stream) |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Memulai operasi penulisan asinkron. (Pertimbangkan untuk menggunakan WriteAsync sebagai gantinya.) |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Memulai operasi penulisan asinkron. (Pertimbangkan untuk menggunakan WriteAsync(Byte[], Int32, Int32) sebagai gantinya.) (Diperoleh dari Stream) |
Clear() |
Merilis semua sumber daya yang digunakan oleh CryptoStream. |
Close() |
Menutup aliran saat ini dan merilis sumber daya apa pun (seperti soket dan handel file) yang terkait dengan aliran saat ini. |
Close() |
Menutup aliran saat ini dan merilis sumber daya apa pun (seperti soket dan handel file) yang terkait dengan aliran saat ini. Alih-alih memanggil metode ini, pastikan aliran dibuang dengan benar. (Diperoleh dari Stream) |
CopyTo(Stream) |
Membaca byte dari aliran saat ini dan menulisnya ke aliran lain. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyTo(Stream, Int32) |
Membaca byte dari aliran yang mendasar, menerapkan transformasi kriptografi yang relevan, dan menulis hasilnya ke aliran tujuan. |
CopyTo(Stream, Int32) |
Membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan ukuran buffer tertentu. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyToAsync(Stream) |
Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyToAsync(Stream, CancellationToken) |
Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan token pembatalan tertentu. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyToAsync(Stream, Int32) |
Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan ukuran buffer tertentu. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyToAsync(Stream, Int32, CancellationToken) |
Secara asinkron membaca byte dari aliran yang mendasar, menerapkan transformasi kriptografi yang relevan, dan menulis hasilnya ke aliran tujuan. |
CopyToAsync(Stream, Int32, CancellationToken) |
Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan ukuran buffer dan token pembatalan yang ditentukan. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CreateObjRef(Type) |
Membuat objek yang berisi semua informasi relevan yang diperlukan untuk menghasilkan proksi yang digunakan untuk berkomunikasi dengan objek jarak jauh. (Diperoleh dari MarshalByRefObject) |
CreateWaitHandle() |
Kedaluwarsa.
Kedaluwarsa.
Kedaluwarsa.
Mengalokasikan objek WaitHandle. (Diperoleh dari Stream) |
Dispose() |
Merilis semua sumber daya yang digunakan oleh Stream. (Diperoleh dari Stream) |
Dispose(Boolean) |
Merilis sumber daya yang tidak dikelola yang digunakan oleh CryptoStream dan secara opsional merilis sumber daya terkelola. |
DisposeAsync() |
Secara asinkron merilis sumber daya yang tidak dikelola yang digunakan oleh CryptoStream. |
DisposeAsync() |
Secara asinkron merilis sumber daya yang tidak dikelola yang digunakan oleh Stream. (Diperoleh dari Stream) |
EndRead(IAsyncResult) |
Menunggu pembacaan asinkron yang tertunda selesai. (Pertimbangkan untuk menggunakan ReadAsync sebagai gantinya.) |
EndRead(IAsyncResult) |
Menunggu pembacaan asinkron yang tertunda selesai. (Pertimbangkan untuk menggunakan ReadAsync(Byte[], Int32, Int32) sebagai gantinya.) (Diperoleh dari Stream) |
EndWrite(IAsyncResult) |
Mengakhiri operasi penulisan asinkron. (Pertimbangkan untuk menggunakan WriteAsync sebagai gantinya.) |
EndWrite(IAsyncResult) |
Mengakhiri operasi penulisan asinkron. (Pertimbangkan untuk menggunakan WriteAsync(Byte[], Int32, Int32) sebagai gantinya.) (Diperoleh dari Stream) |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
Finalize() |
Memungkinkan objek untuk mencoba membebaskan sumber daya dan melakukan operasi pembersihan lainnya sebelum direklamasi kembali oleh pengumpulan sampah. |
Flush() |
Menghapus semua buffer untuk aliran saat ini dan menyebabkan data buffer ditulis ke perangkat yang mendasar. |
FlushAsync() |
Secara asinkron menghapus semua buffer untuk aliran ini dan menyebabkan data yang di-buffer ditulis ke perangkat yang mendasar. (Diperoleh dari Stream) |
FlushAsync(CancellationToken) |
Menghapus semua buffer untuk aliran saat ini secara asinkron, menyebabkan data yang di-buffer ditulis ke perangkat yang mendasar, dan memantau permintaan pembatalan. |
FlushAsync(CancellationToken) |
Secara asinkron menghapus semua buffer untuk aliran ini, menyebabkan data yang di-buffer ditulis ke perangkat yang mendasar, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
FlushFinalBlock() |
Memperbarui sumber data atau repositori yang mendasar dengan status buffer saat ini, lalu menghapus buffer. |
FlushFinalBlockAsync(CancellationToken) |
Secara asinkron memperbarui sumber data atau repositori yang mendasar dengan status buffer saat ini, lalu menghapus buffer. |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetLifetimeService() |
Kedaluwarsa.
Mengambil objek layanan seumur hidup saat ini yang mengontrol kebijakan seumur hidup untuk instans ini. (Diperoleh dari MarshalByRefObject) |
GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
InitializeLifetimeService() |
Kedaluwarsa.
Mendapatkan objek layanan seumur hidup untuk mengontrol kebijakan seumur hidup untuk instans ini. (Diperoleh dari MarshalByRefObject) |
MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
MemberwiseClone(Boolean) |
Membuat salinan dangkal objek MarshalByRefObject saat ini. (Diperoleh dari MarshalByRefObject) |
ObjectInvariant() |
Kedaluwarsa.
Menyediakan dukungan untuk Contract. (Diperoleh dari Stream) |
Read(Byte[], Int32, Int32) |
Membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca. |
Read(Span<Byte>) |
Ketika ditimpa dalam kelas turunan, membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca. (Diperoleh dari Stream) |
ReadAsync(Byte[], Int32, Int32) |
Secara asinkron membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca. (Diperoleh dari Stream) |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Membaca urutan byte dari aliran saat ini secara asinkron, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan. |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Secara asinkron membaca urutan byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
ReadAsync(Memory<Byte>, CancellationToken) |
Secara asinkron membaca urutan byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan. |
ReadAsync(Memory<Byte>, CancellationToken) |
Secara asinkron membaca urutan byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
ReadAtLeast(Span<Byte>, Int32, Boolean) |
Membaca setidaknya jumlah minimum byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca. (Diperoleh dari Stream) |
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
Secara asinkron membaca setidaknya jumlah minimum byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
ReadByte() |
Membaca byte dari aliran dan memajukan posisi dalam aliran dengan satu byte, atau mengembalikan -1 jika di akhir aliran. |
ReadByte() |
Membaca byte dari aliran dan memajukan posisi dalam aliran dengan satu byte, atau mengembalikan -1 jika di akhir aliran. (Diperoleh dari Stream) |
ReadExactly(Byte[], Int32, Int32) |
Membaca |
ReadExactly(Span<Byte>) |
Membaca byte dari aliran saat ini dan memajukan posisi dalam aliran hingga |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Membaca secara asinkron |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Membaca byte secara asinkron dari aliran saat ini, memajukan posisi dalam aliran hingga |
Seek(Int64, SeekOrigin) |
Mengatur posisi dalam aliran saat ini. |
SetLength(Int64) |
Mengatur panjang aliran saat ini. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Write(Byte[], Int32, Int32) |
Menulis urutan byte ke CryptoStream saat ini dan memajukan posisi saat ini dalam aliran dengan jumlah byte yang ditulis. |
Write(ReadOnlySpan<Byte>) |
Ketika ditimpa dalam kelas turunan, menulis urutan byte ke aliran saat ini dan memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis. (Diperoleh dari Stream) |
WriteAsync(Byte[], Int32, Int32) |
Secara asinkron menulis urutan byte ke aliran saat ini dan memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis. (Diperoleh dari Stream) |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Menulis urutan byte ke aliran saat ini secara asinkron, memajukan posisi saat ini dalam aliran dengan jumlah byte yang ditulis, dan memantau permintaan pembatalan. |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Secara asinkron menulis urutan byte ke aliran saat ini, memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Secara asinkron menulis urutan byte ke aliran saat ini, memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis, dan memantau permintaan pembatalan. |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Secara asinkron menulis urutan byte ke aliran saat ini, memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
WriteByte(Byte) |
Menulis byte ke posisi saat ini dalam aliran dan memajukan posisi dalam aliran oleh satu byte. |
WriteByte(Byte) |
Menulis byte ke posisi saat ini dalam aliran dan memajukan posisi dalam aliran oleh satu byte. (Diperoleh dari Stream) |
Implementasi Antarmuka Eksplisit
IDisposable.Dispose() |
API ini mendukung infrastruktur produk dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. Merilis sumber daya yang digunakan oleh instans kelas CryptoStream saat ini. |
Metode Ekstensi
CopyToAsync(Stream, PipeWriter, CancellationToken) |
Secara asinkron membaca byte dari Stream dan menulisnya ke PipeWriteryang ditentukan , menggunakan token pembatalan. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Mengonfigurasi bagaimana menunggu tugas yang dikembalikan dari asinkron sekali pakai akan dilakukan. |
Berlaku untuk
Lihat juga
- Layanan Kriptografi
- Bacaan parsial dan nol-byte dalam DeflateStream, GZipStream, dan CryptoStream