TripleDES 類別

定義

表示三重資料加密標準演算法的基底類別,所有 TripleDES 實作都必須衍生自此類別。

public ref class TripleDES abstract : System::Security::Cryptography::SymmetricAlgorithm
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public abstract class TripleDES : System.Security.Cryptography.SymmetricAlgorithm
public abstract class TripleDES : System.Security.Cryptography.SymmetricAlgorithm
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class TripleDES : System.Security.Cryptography.SymmetricAlgorithm
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
type TripleDES = class
    inherit SymmetricAlgorithm
type TripleDES = class
    inherit SymmetricAlgorithm
[<System.Runtime.InteropServices.ComVisible(true)>]
type TripleDES = class
    inherit SymmetricAlgorithm
Public MustInherit Class TripleDES
Inherits SymmetricAlgorithm
繼承
衍生
屬性

範例

下列程式碼範例方法會 TripleDESCryptoServiceProvider 搭配指定的索引鍵 (Key) 和初始化向量 IV () 來加密 指定的 inName 檔案。 然後,它會將加密的結果輸出至 所 outName 指定的檔案。

void EncryptData( String^ inName, String^ outName, array<Byte>^tdesKey, array<Byte>^tdesIV )
{
   
   //Create the file streams to handle the input and output files.
   FileStream^ fin = gcnew FileStream( inName,FileMode::Open,FileAccess::Read );
   FileStream^ fout = gcnew FileStream( outName,FileMode::OpenOrCreate,FileAccess::Write );
   fout->SetLength( 0 );
   
   //Create variables to help with read and write.
   array<Byte>^bin = gcnew array<Byte>(100);
   long rdlen = 0; //This is the total number of bytes written.

   long totlen = (long)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.

   TripleDESCryptoServiceProvider^ tdes = gcnew TripleDESCryptoServiceProvider;
   CryptoStream^ encStream = gcnew CryptoStream( fout,tdes->CreateEncryptor( tdesKey, tdesIV ),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();
}
private static void EncryptData(string inName, string outName, byte[] tdesKey, byte[] tdesIV)
{
    //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.

    TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
    CryptoStream encStream = new CryptoStream(fout, tdes.CreateEncryptor(tdesKey, tdesIV), 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();
}
Private Shared Sub EncryptData(inName As String, outName As String, _
   tdesKey() As Byte, tdesIV() 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(100) 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 'This is the total length of the input file.
    Dim len As Integer 'This is the number of bytes to be written at a time.
    Dim tdes As New TripleDESCryptoServiceProvider()
    Dim encStream As New CryptoStream(fout, _
       tdes.CreateEncryptor(tdesKey, tdesIV), 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)
    End While
        
    encStream.Close()
End Sub

解密可以用相同方式處理;使用 CreateDecryptorCreateEncryptor 而不是 。 用來加密檔案的 Key 相同金鑰 () 和初始化向量 (IV) 必須用來解密檔案。

備註

TripleDES 會使用演算法的 DES 三個連續反復專案。 它可以使用兩或三個 56 位金鑰。

注意

有先進加密標準 (Advanced Encryption Standard,AES) 這個較新的對稱加密演算法可供使用。 請考慮使用 Aes 類別及其衍生類別,而不是 類別 TripleDESTripleDES僅用於與繼承應用程式和資料的相容性。

此演算法支援 128 位到 192 位的金鑰長度,增量為 64 位。

建構函式

TripleDES()

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

欄位

BlockSizeValue

表示密碼編譯作業的區塊大小,以位元為單位。

(繼承來源 SymmetricAlgorithm)
FeedbackSizeValue

表示密碼編譯作業的回饋大小,以位元為單位。

(繼承來源 SymmetricAlgorithm)
IVValue

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

(繼承來源 SymmetricAlgorithm)
KeySizeValue

表示對稱演算法使用之祕密金鑰的大小,以位元為單位。

(繼承來源 SymmetricAlgorithm)
KeyValue

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

(繼承來源 SymmetricAlgorithm)
LegalBlockSizesValue

指定對稱演算法所支援的區塊大小,以位元為單位。

(繼承來源 SymmetricAlgorithm)
LegalKeySizesValue

指定對稱演算法所支援的金鑰大小,以位元為單位。

(繼承來源 SymmetricAlgorithm)
ModeValue

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

(繼承來源 SymmetricAlgorithm)
PaddingValue

表示對稱演算法中使用的填補模式。

(繼承來源 SymmetricAlgorithm)

屬性

BlockSize

取得或設定密碼編譯作業的區塊大小,以位元為單位。

(繼承來源 SymmetricAlgorithm)
FeedbackSize

取得或設定加密回饋 (CFB) 和輸出回饋 (OFB) 加密模式之密碼編譯作業的回饋大小 (以位元為單位)。

(繼承來源 SymmetricAlgorithm)
IV

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

(繼承來源 SymmetricAlgorithm)
Key

取得或設定 TripleDES 演算法的祕密金鑰。

KeySize

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

(繼承來源 SymmetricAlgorithm)
LegalBlockSizes

取得對稱演算法所支援的區塊大小,以位元為單位。

LegalBlockSizes

取得對稱演算法所支援的區塊大小,以位元為單位。

(繼承來源 SymmetricAlgorithm)
LegalKeySizes

取得對稱演算法所支援的金鑰大小,以位元為單位。

LegalKeySizes

取得對稱演算法所支援的金鑰大小,以位元為單位。

(繼承來源 SymmetricAlgorithm)
Mode

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

(繼承來源 SymmetricAlgorithm)
Padding

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

(繼承來源 SymmetricAlgorithm)

方法

Clear()

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

(繼承來源 SymmetricAlgorithm)
Create()

建立密碼編譯物件的執行個體,以執行 TripleDES 演算法。

Create(String)
已淘汰.

建立密碼編譯物件的執行個體來執行 TripleDES 演算法的指定實作。

CreateDecryptor()

使用目前的 Key 屬性和初始化向量 (IV),建立對稱解密子物件。

(繼承來源 SymmetricAlgorithm)
CreateDecryptor(Byte[], Byte[])

在衍生類別中覆寫時,使用指定的 Key 屬性和初始化向量 (IV) 建立對稱解密子物件。

(繼承來源 SymmetricAlgorithm)
CreateEncryptor()

使用目前的 Key 屬性和初始化向量 (IV),建立對稱加密子物件。

(繼承來源 SymmetricAlgorithm)
CreateEncryptor(Byte[], Byte[])

在衍生類別中覆寫時,使用指定的 Key 屬性和初始化向量 (IV) 建立對稱加密子物件。

(繼承來源 SymmetricAlgorithm)
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 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。

(繼承來源 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)。

(繼承來源 SymmetricAlgorithm)
GenerateKey()

在衍生類別中覆寫時,產生要用於演算法的隨機金鑰 (Key)。

(繼承來源 SymmetricAlgorithm)
GetCiphertextLengthCbc(Int32, PaddingMode)

取得具有指定填補模式和 CBC 模式中純文字長度的加密文字長度。

(繼承來源 SymmetricAlgorithm)
GetCiphertextLengthCfb(Int32, PaddingMode, Int32)

取得具有指定填補模式和 CFB 模式中純文字長度的加密文字長度。

(繼承來源 SymmetricAlgorithm)
GetCiphertextLengthEcb(Int32, PaddingMode)

取得具有指定填補模式和 ECB 模式中純文字長度的加密文字長度。

(繼承來源 SymmetricAlgorithm)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
IsWeakKey(Byte[])

判斷指定的金鑰是否為弱式。

MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
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)

明確介面實作

IDisposable.Dispose()

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

釋放 SymmetricAlgorithm 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。

(繼承來源 SymmetricAlgorithm)

適用於

另請參閱