DESCryptoServiceProvider 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
警告
Derived cryptographic types are obsolete. Use the Create method on the base type instead.
定義包裝函式物件,以存取資料加密標準 (DES) 演算法的密碼編譯服務供應者 (CSP) 版本。 此類別無法獲得繼承。
public ref class DESCryptoServiceProvider sealed : System::Security::Cryptography::DES
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}")]
public sealed class DESCryptoServiceProvider : System.Security.Cryptography.DES
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class DESCryptoServiceProvider : System.Security.Cryptography.DES
type DESCryptoServiceProvider = class
inherit 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
[<System.Runtime.InteropServices.ComVisible(true)>]
type DESCryptoServiceProvider = class
inherit DES
Public NotInheritable Class DESCryptoServiceProvider
Inherits DES
- 繼承
- 屬性
範例
下列程式代碼範例會使用 DESCryptoServiceProvider () 實作 DES 搭配指定的密鑰 () Key 和初始化向量, IV () 來加密 指定的 inName
檔案。 然後,它會將加密的結果輸出至 所 outName
指定的檔案。
void EncryptData( String^ inName, String^ outName, array<Byte>^desKey, array<Byte>^desIV )
{
//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.
DES^ des = gcnew DESCryptoServiceProvider;
CryptoStream^ encStream = gcnew 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 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
解密可以用相同方式處理;使用 CreateDecryptor , CreateEncryptor而不是 。 用來加密檔案的 Key 相同金鑰 () 和初始化向量 (IV) 必須用來解密檔案。
備註
此演演算法支援64位的金鑰長度。
重要
有先進加密標準 (Advanced Encryption Standard,AES) 這個較新的對稱加密演算法可供使用。 請考慮使用 Aes 類別,而不是 DES 類別。 DES僅用於與舊版應用程式和數據的相容性。
建構函式
DESCryptoServiceProvider() |
已淘汰.
初始化 DESCryptoServiceProvider 類別的新執行個體。 |
欄位
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 |
已淘汰.
取得或設定資料加密標準 (DES) 演算法的祕密金鑰。 (繼承來源 DES) |
KeySize |
已淘汰.
取得或設定對稱演算法使用之秘密金鑰的大小,以位元為單位。 (繼承來源 SymmetricAlgorithm) |
LegalBlockSizes |
已淘汰.
取得對稱演算法所支援的區塊大小,以位元為單位。 (繼承來源 SymmetricAlgorithm) |
LegalKeySizes |
已淘汰.
取得對稱演算法所支援的金鑰大小,以位元為單位。 (繼承來源 SymmetricAlgorithm) |
Mode |
已淘汰.
取得或設定對稱演算法的作業模式。 (繼承來源 SymmetricAlgorithm) |
Padding |
已淘汰.
取得或設定對稱演算法中使用的填補模式。 (繼承來源 SymmetricAlgorithm) |
方法
明確介面實作
IDisposable.Dispose() |
此 API 支援此產品基礎結構,但無法直接用於程式碼之中。
已淘汰.
釋放 SymmetricAlgorithm 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。 (繼承來源 SymmetricAlgorithm) |