DESCryptoServiceProvider 類別

定義

警告

Derived cryptographic types are obsolete. Use the Create method on the base type instead.

定義一個包裝物件,用於存取資料加密標準(Data Encryption Standard)DES演算法的密碼服務提供者(CSP)版本。 此類別無法獲得繼承。

public ref class DESCryptoServiceProvider sealed : System::Security::Cryptography::DES
[System.Obsolete("Derived cryptographic types are obsolete. Use the Create method on the base type instead.", DiagnosticId="SYSLIB0021", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class DESCryptoServiceProvider : System.Security.Cryptography.DES
public sealed class DESCryptoServiceProvider : System.Security.Cryptography.DES
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class DESCryptoServiceProvider : System.Security.Cryptography.DES
[<System.Obsolete("Derived cryptographic types are obsolete. Use the Create method on the base type instead.", DiagnosticId="SYSLIB0021", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type DESCryptoServiceProvider = class
    inherit DES
type DESCryptoServiceProvider = class
    inherit DES
[<System.Runtime.InteropServices.ComVisible(true)>]
type DESCryptoServiceProvider = class
    inherit DES
Public NotInheritable Class DESCryptoServiceProvider
Inherits DES
繼承
DESCryptoServiceProvider
屬性

範例

以下程式碼範例使用 DESCryptoServiceProvider (實作 DES)並指定金鑰 (Key) 與初始化向量 (IV) 來加密由 所 inName指定的檔案。 接著將加密結果輸出到指定的 outName檔案。

private static void EncryptData(string inName, string outName, byte[] desKey, byte[] desIV)
 {
     //Create the file streams to handle the input and output files.
     FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
     FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
     fout.SetLength(0);

     //Create variables to help with read and write.
     byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
     long rdlen = 0;              //This is the total number of bytes written.
     long totlen = fin.Length;    //This is the total length of the input file.
     int len;                     //This is the number of bytes to be written at a time.

     DES des = new DESCryptoServiceProvider();
     CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write);

     Console.WriteLine("Encrypting...");

     //Read from the input file, then encrypt and write to the output file.
     while(rdlen < totlen)
     {
         len = fin.Read(bin, 0, 100);
         encStream.Write(bin, 0, len);
         rdlen = rdlen + len;
         Console.WriteLine("{0} bytes processed", rdlen);
     }

     encStream.Close();
     fout.Close();
     fin.Close();
 }
Private Shared Sub EncryptData(inName As String, outName As String, _
desKey() As Byte, desIV() As Byte)

    'Create the file streams to handle the input and output files.
    Dim fin As New FileStream(inName, FileMode.Open, FileAccess.Read)
    Dim fout As New FileStream(outName, FileMode.OpenOrCreate, _
       FileAccess.Write)
    fout.SetLength(0)
    
    'Create variables to help with read and write.
    Dim bin(4096) As Byte 'This is intermediate storage for the encryption.
    Dim rdlen As Long = 0 'This is the total number of bytes written.
    Dim totlen As Long = fin.Length 'Total length of the input file.
    Dim len As Integer 'This is the number of bytes to be written at a time.
    Dim des As New DESCryptoServiceProvider()
    Dim encStream As New CryptoStream(fout, _
       des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write)
    
    Console.WriteLine("Encrypting...")
    
    'Read from the input file, then encrypt and write to the output file.
    While rdlen < totlen
        len = fin.Read(bin, 0, 4096)
        encStream.Write(bin, 0, len)
        rdlen = Convert.ToInt32(rdlen + len / des.BlockSize * des.BlockSize)
        Console.WriteLine("Processed {0} bytes, {1} bytes total", len, _
           rdlen)
    End While
    
    encStream.Close()
End Sub

解密也可以用同樣的方式處理;用 代替 CreateDecryptorCreateEncryptor。 解密時必須使用用於加密檔案的相同金鑰(Key)和初始化向量(IV)。

備註

此演算法支援 64 位元的金鑰長度。

Important

一種更新的對稱加密演算法——先進加密標準(AES)——也可用。 考慮用 class 代替 AesDES class。 僅用於 DES 與舊有應用程式及資料相容性。

建構函式

名稱 Description
DESCryptoServiceProvider()
已淘汰.

初始化 DESCryptoServiceProvider 類別的新執行個體。

欄位

名稱 Description
BlockSizeValue
已淘汰.

代表密碼運算的區塊大小(位元)。

(繼承來源 SymmetricAlgorithm)
FeedbackSizeValue
已淘汰.

代表密碼運算的反饋大小(位元)。

(繼承來源 SymmetricAlgorithm)
IVValue
已淘汰.

代表對稱演算法的初始化向量(IV)。

(繼承來源 SymmetricAlgorithm)
KeySizeValue
已淘汰.

代表對稱演算法所使用的秘密金鑰的大小(以位元為單位)。

(繼承來源 SymmetricAlgorithm)
KeyValue
已淘汰.

代表對稱演算法的祕密金鑰。

(繼承來源 SymmetricAlgorithm)
LegalBlockSizesValue
已淘汰.

指定對稱演算法所支援的區塊大小(位元)。

(繼承來源 SymmetricAlgorithm)
LegalKeySizesValue
已淘汰.

指定對稱演算法所支援的金鑰大小(位元)。

(繼承來源 SymmetricAlgorithm)
ModeValue
已淘汰.

代表對稱演算法中使用的密碼模式。

(繼承來源 SymmetricAlgorithm)
PaddingValue
已淘汰.

代表對稱演算法中使用的填充模式。

(繼承來源 SymmetricAlgorithm)

屬性

名稱 Description
BlockSize
已淘汰.

取得或設定密碼運算的區塊大小(位元)。

(繼承來源 SymmetricAlgorithm)
FeedbackSize
已淘汰.

取得或設定密碼反饋(CFB)與輸出反饋(OFB)密碼模式的反饋大小(位元)。

(繼承來源 SymmetricAlgorithm)
IV
已淘汰.

取得或設定對稱演算法的初始化向量(IV)。

(繼承來源 SymmetricAlgorithm)
Key
已淘汰.

取得或設定資料加密標準(Data Encryption Standard)DES演算法的秘密金鑰。

(繼承來源 DES)
KeySize
已淘汰.

取得或設定對稱演算法所使用的秘密金鑰的大小(以位元為單位)。

(繼承來源 SymmetricAlgorithm)
LegalBlockSizes
已淘汰.

取得對稱演算法所支援的區塊大小(位元)。

(繼承來源 SymmetricAlgorithm)
LegalKeySizes
已淘汰.

取得對稱演算法所支援的金鑰大小(位元)。

(繼承來源 SymmetricAlgorithm)
Mode
已淘汰.

取得或設定對稱演算法的運作模式。

(繼承來源 SymmetricAlgorithm)
Padding
已淘汰.

取得或設定對稱演算法中使用的填充模式。

(繼承來源 SymmetricAlgorithm)

方法

名稱 Description
Clear()
已淘汰.

釋放 SymmetricAlgorithm 類別所使用的所有資源。

(繼承來源 SymmetricAlgorithm)
CreateDecryptor()
已淘汰.

建立一個對稱解密物件,其目前 Key 屬性與初始化向量IV()。

CreateDecryptor()
已淘汰.

建立一個對稱解密物件,其目前 Key 屬性與初始化向量IV()。

(繼承來源 SymmetricAlgorithm)
CreateDecryptor(Byte[], Byte[])
已淘汰.

建立一個對稱的資料加密標準解DES密物件,包含指定的金鑰(Key)與初始化向量(IV)。

CreateEncryptor()
已淘汰.

建立一個對稱加密物件,其目前 Key 屬性為 ,初始化向量為 (IV)。

CreateEncryptor()
已淘汰.

建立一個對稱加密物件,其目前 Key 屬性為 ,初始化向量為 (IV)。

(繼承來源 SymmetricAlgorithm)
CreateEncryptor(Byte[], Byte[])
已淘汰.

建立一個對稱的資料加密標準(DES)加密物件,指定金鑰(Key)與初始化向量(IV)。

DecryptCbc(Byte[], Byte[], PaddingMode)
已淘汰.

透過指定的填充模式(CBC)解密資料。

(繼承來源 SymmetricAlgorithm)
DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)
已淘汰.

透過指定的填充模式(CBC)解密資料。

(繼承來源 SymmetricAlgorithm)
DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
已淘汰.

將資料解密到指定的緩衝區,使用 CBC 模式並搭配指定的填充模式。

(繼承來源 SymmetricAlgorithm)
DecryptCfb(Byte[], Byte[], PaddingMode, Int32)
已淘汰.

透過CFB模式解密資料,並依照指定的填充模式和回饋大小進行解密。

(繼承來源 SymmetricAlgorithm)
DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)
已淘汰.

透過CFB模式解密資料,並依照指定的填充模式和回饋大小進行解密。

(繼承來源 SymmetricAlgorithm)
DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
已淘汰.

將資料解密到指定的緩衝區,使用CFB模式,並使用指定的填充模式和回饋大小。

(繼承來源 SymmetricAlgorithm)
DecryptEcb(Byte[], PaddingMode)
已淘汰.

透過ECB模式及指定的填充模式解密資料。

(繼承來源 SymmetricAlgorithm)
DecryptEcb(ReadOnlySpan<Byte>, PaddingMode)
已淘汰.

透過ECB模式及指定的填充模式解密資料。

(繼承來源 SymmetricAlgorithm)
DecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
已淘汰.

將資料解密到指定的緩衝區,使用 ECB 模式並搭配指定的填充模式。

(繼承來源 SymmetricAlgorithm)
Dispose()
已淘汰.

釋放目前類別實例 SymmetricAlgorithm 所使用的所有資源。

(繼承來源 SymmetricAlgorithm)
Dispose(Boolean)
已淘汰.

釋放 未管理的資源, SymmetricAlgorithm 並可選擇性地釋放受管理資源。

(繼承來源 SymmetricAlgorithm)
EncryptCbc(Byte[], Byte[], PaddingMode)
已淘汰.

以 CBC 模式並指定填充模式加密資料。

(繼承來源 SymmetricAlgorithm)
EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)
已淘汰.

以 CBC 模式並指定填充模式加密資料。

(繼承來源 SymmetricAlgorithm)
EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
已淘汰.

將資料加密到指定的緩衝區,使用 CBC 模式並搭配指定的填充模式。

(繼承來源 SymmetricAlgorithm)
EncryptCfb(Byte[], Byte[], PaddingMode, Int32)
已淘汰.

使用CFB模式加密資料,並配合指定的填充模式與回饋大小。

(繼承來源 SymmetricAlgorithm)
EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)
已淘汰.

使用CFB模式加密資料,並配合指定的填充模式與回饋大小。

(繼承來源 SymmetricAlgorithm)
EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
已淘汰.

將資料加密到指定的緩衝區,使用 CFB 模式,並符合指定的填充模式與反饋大小。

(繼承來源 SymmetricAlgorithm)
EncryptEcb(Byte[], PaddingMode)
已淘汰.

以ECB模式加密資料,並搭配指定的填充模式。

(繼承來源 SymmetricAlgorithm)
EncryptEcb(ReadOnlySpan<Byte>, PaddingMode)
已淘汰.

以ECB模式加密資料,並搭配指定的填充模式。

(繼承來源 SymmetricAlgorithm)
EncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
已淘汰.

將資料加密到指定的緩衝區,使用 ECB 模式並搭配指定的填充模式。

(繼承來源 SymmetricAlgorithm)
Equals(Object)
已淘汰.

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GenerateIV()
已淘汰.

產生一個隨機初始化向量(IV)用於演算法。

GenerateKey()
已淘汰.

產生一個隨機金鑰Key()用於演算法。

GetCiphertextLengthCbc(Int32, PaddingMode)
已淘汰.

取得密文在特定填充模式下的長度,以及在 CBC 模式下的明文長度。

(繼承來源 SymmetricAlgorithm)
GetCiphertextLengthCfb(Int32, PaddingMode, Int32)
已淘汰.

取得密文在特定填充模式下的長度,以及在 CFB 模式下的明文長度。

(繼承來源 SymmetricAlgorithm)
GetCiphertextLengthEcb(Int32, PaddingMode)
已淘汰.

取得密文在特定填充模式下的長度,以及在 ECB 模式下的明文長度。

(繼承來源 SymmetricAlgorithm)
GetHashCode()
已淘汰.

做為預設哈希函式。

(繼承來源 Object)
GetType()
已淘汰.

取得目前實例的 Type

(繼承來源 Object)
MemberwiseClone()
已淘汰.

建立目前 Object的淺層複本。

(繼承來源 Object)
SetKey(ReadOnlySpan<Byte>)
已淘汰.

設定此實例的金鑰。

(繼承來源 SymmetricAlgorithm)
SetKeyCore(ReadOnlySpan<Byte>)
已淘汰.

設定此實例的金鑰。

(繼承來源 SymmetricAlgorithm)
ToString()
已淘汰.

傳回表示目前 物件的字串。

(繼承來源 Object)
TryDecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)
已淘汰.

嘗試將資料解密到指定的緩衝區,使用 CBC 模式並搭配指定的填充模式。

(繼承來源 SymmetricAlgorithm)
TryDecryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
已淘汰.

當在派生類別中被覆寫時,會嘗試將資料解密到指定的緩衝區,使用 CBC 模式並搭配指定的填充模式。

(繼承來源 SymmetricAlgorithm)
TryDecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)
已淘汰.

嘗試將資料解密到指定的緩衝區,使用指定的填充模式與反饋大小的 CFB 模式。

(繼承來源 SymmetricAlgorithm)
TryDecryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)
已淘汰.

當在派生類別中覆寫時,嘗試將資料解密到指定的緩衝區,使用指定的填充模式與反饋大小的 CFB 模式。

(繼承來源 SymmetricAlgorithm)
TryDecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
已淘汰.

嘗試將資料解密到指定的緩衝區,使用 ECB 模式並搭配指定的填充模式。

(繼承來源 SymmetricAlgorithm)
TryDecryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
已淘汰.

當在派生類別中覆寫時,會嘗試將資料解密到指定的緩衝區,使用 ECB 模式並搭配指定的填充模式。

(繼承來源 SymmetricAlgorithm)
TryEncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)
已淘汰.

嘗試將資料加密到指定的緩衝區,使用 CBC 模式並搭配指定的填充模式。

(繼承來源 SymmetricAlgorithm)
TryEncryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
已淘汰.

當在派生類別中覆寫時,會嘗試將資料加密到指定的緩衝區,使用 CBC 模式並搭配指定的填充模式。

(繼承來源 SymmetricAlgorithm)
TryEncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)
已淘汰.

嘗試將資料加密到指定的緩衝區,使用指定的填充模式與反饋大小的 CFB 模式。

(繼承來源 SymmetricAlgorithm)
TryEncryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)
已淘汰.

當在派生類別中覆寫時,嘗試將資料加密到指定的緩衝區,使用 CFB 模式,並搭配指定的填充模式和反饋大小。

(繼承來源 SymmetricAlgorithm)
TryEncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
已淘汰.

嘗試將資料加密到指定的緩衝區,使用 ECB 模式並搭配指定的填充模式。

(繼承來源 SymmetricAlgorithm)
TryEncryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
已淘汰.

當在派生類別中覆寫時,會嘗試將資料加密到指定的緩衝區,使用 ECB 模式並搭配指定的填充模式。

(繼承來源 SymmetricAlgorithm)
ValidKeySize(Int32)
已淘汰.

判斷指定金鑰大小是否適用於目前演算法。

(繼承來源 SymmetricAlgorithm)

明確介面實作

名稱 Description
IDisposable.Dispose()

此 API 支援此產品基礎結構,但無法直接用於程式碼之中。

已淘汰.

釋放 未管理的資源, SymmetricAlgorithm 並可選擇性地釋放受管理資源。

(繼承來源 SymmetricAlgorithm)

適用於

另請參閱