TripleDES 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示三重資料加密標準演算法的基底類別,所有 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
解密可以相同方式處理;使用 CreateDecryptor ,而不是 CreateEncryptor。 用來加密檔案的相同金鑰 (Key) ) 和初始化向量 IV (必須用來解密檔案。
備註
TripleDES 會使用演算法的 DES 三個連續反覆專案。 它可以使用兩個或三個56位金鑰。
注意
有先進加密標準 (Advanced Encryption Standard,AES) 這個較新的對稱加密演算法可供使用。 請考慮使用 Aes 類別及其衍生類別,而不是類別 TripleDES 。 僅用於 TripleDES 與舊版應用程式和數據的相容性。
此演演算法支援從 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) |
方法
明確介面實作
IDisposable.Dispose() |
此 API 支援此產品基礎結構,但無法直接用於程式碼之中。 釋放 SymmetricAlgorithm 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。 (繼承來源 SymmetricAlgorithm) |