DESCryptoServiceProvider 类

定义

注意

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
[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
属性

示例

下面的代码示例使用DESCryptoServiceProviderDES的实现)与指定的键(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

可以采用相同的方式处理解密;使用 CreateDecryptor 而不是 CreateEncryptor. 用于加密文件的相同密钥(Key)和初始化向量(IV)必须用于解密该文件。

注解

此算法支持密钥长度为 64 位。

Important

新的对称加密算法高级加密标准(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)

方法

名称 说明
Clear()
已过时.

释放类使用 SymmetricAlgorithm 的所有资源。

(继承自 SymmetricAlgorithm)
CreateDecryptor()
已过时.

使用当前 Key 属性和初始化向量创建对称解密器对象(IV)。

CreateDecryptor()
已过时.

使用当前 Key 属性和初始化向量创建对称解密器对象(IV)。

(继承自 SymmetricAlgorithm)
CreateDecryptor(Byte[], Byte[])
已过时.

使用指定的密钥(DES)和初始化向量()创建对称数据加密标准(KeyIV)解密器对象。

CreateEncryptor()
已过时.

使用当前 Key 属性和初始化向量IV () 创建对称加密器对象。

CreateEncryptor()
已过时.

使用当前 Key 属性和初始化向量IV () 创建对称加密器对象。

(继承自 SymmetricAlgorithm)
CreateEncryptor(Byte[], Byte[])
已过时.

使用指定的密钥(DES)和初始化向量()创建对称数据加密标准 (KeyIV) 加密器对象。

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)

显式接口实现

名称 说明
IDisposable.Dispose()

此 API 支持产品基础结构,不能在代码中直接使用。

已过时.

释放由托管资源使用 SymmetricAlgorithm 的非托管资源,并选择性地释放托管资源。

(继承自 SymmetricAlgorithm)

适用于

另请参阅