DESCryptoServiceProvider Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет объект-оболочку для доступа к версии поставщика криптографических служб (CSP) алгоритма шифрования данных уровня "СтандартныйDES". Этот класс не наследуется.
public ref class DESCryptoServiceProvider sealed : 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
type DESCryptoServiceProvider = class
inherit DES
[<System.Runtime.InteropServices.ComVisible(true)>]
type DESCryptoServiceProvider = class
inherit DES
Public NotInheritable Class DESCryptoServiceProvider
Inherits DES
- Наследование
- Атрибуты
Примеры
В следующем примере кода используется DESCryptoServiceProvider (реализацияDES) с указанным ключом () и вектором инициализации (IVKey) для шифрования файла, указанного в 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
Расшифровка может обрабатываться таким же образом; вместо CreateDecryptorCreateEncryptor. Тот же ключ () и вектор инициализации (KeyIV), используемый для шифрования файла, должен использоваться для расшифровки файла.
Комментарии
Этот алгоритм поддерживает длину ключа 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) с указанным ключом (Key) и вектором инициализации (IV). |
| CreateEncryptor() |
Создает объект симметричного шифратора с текущим Key свойством и вектором инициализации (IV). |
| CreateEncryptor() |
Создает объект симметричного шифратора с текущим Key свойством и вектором инициализации (IV). (Унаследовано от SymmetricAlgorithm) |
| CreateEncryptor(Byte[], Byte[]) |
Создает объект шифрования симметричного шифрования данных () с указанным ключом (DESKey) и вектором инициализации (IV). |
| Dispose() |
Освобождает все ресурсы, используемые текущим экземпляром класса SymmetricAlgorithm. (Унаследовано от SymmetricAlgorithm) |
| Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые SymmetricAlgorithm и при необходимости освобождает управляемые ресурсы. (Унаследовано от SymmetricAlgorithm) |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GenerateIV() |
Создает вектор случайной инициализации (IV), используемый для алгоритма. |
| GenerateKey() |
Создает случайный ключ (Key), используемый для алгоритма. |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
| ValidKeySize(Int32) |
Определяет, является ли указанный размер ключа допустимым для текущего алгоритма. (Унаследовано от SymmetricAlgorithm) |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| IDisposable.Dispose() |
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода. Освобождает неуправляемые ресурсы, используемые SymmetricAlgorithm и при необходимости освобождает управляемые ресурсы. (Унаследовано от SymmetricAlgorithm) |