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::DESpublic 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.DEStype 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 DESPublic 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 位。
构造函数
| 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 占用的非托管资源,还可以另外再释放托管资源。(继承自 SymmetricAlgorithm) |