·  byte[] IV (начальный вектор или вектор инициализации, автоматически устанавливается в новое случайное значение при создании объекта класса);

·  byte[] Key (секретный ключ, необходимый для шифрования и расшифрования данных);

·  int KeySize (длина секретного ключа в битах);

·  KeySizes[] LegalKeySizes (массив значений секретного ключа, допустимых для используемого алгоритма симметричного шифрования; класс KeySizes содержит свойства MaxSize, MinSize и SkipSize, для получения максимального и минимального из допустимых значений длины ключа, а также шага изменения этого значения);

·  int BlockSize (длина блока шифруемых или расшифровываемых данных в битах);

·  KeySizes[] LegalBlockSizes (массив допустимых для криптоалгоритма значений длины блока данных);

·  CipherMode Mode (режим блочного шифрования, перечисление CipherMode содержит значения CBC – режим сцепления блоков шифра, ECB – режим электронной кодовой книги, OFB – режим обратной связи по выходу, CFB – режим обратной связи по шифру, CTS – режим скрытого шифротекста);

·  PaddingMode Padding (правило расширения последнего блока открытого текста при его шифровании в режиме ECB; перечисление PaddingMode содержит значения None – без расширения, PKCS7 – расширение по стандарту PKCS #7, по которому каждый добавляемый байт содержит общее количество добавляемых байт, Zeros – расширение нулевыми байтами, ANSIX923 – расширение по стандарту ANSIX923, по которому все добавляемые байты, кроме последнего, содержат нули, а последний – общее количество добавляемых байт, ISO10126 – расширение по стандарту ISO10126, по которому все добавляемые байты, кроме последнего, содержат случайные значения, а последний – общее количество добавляемых байт);

НЕ нашли? Не то? Что вы ищете?

·  int FeedbackSize – длина обратной связи в битах (используется при шифровании в режимах CFB или OFB; значение этого свойства не может превышать длину блока).

При неправильном задании значения этих свойств при выполнении приложения генерируется исключение типа CryptographicException (свойство Message этого класса содержит строку с описанием ошибки).

Класс SymmetricAlgorithm содержит следующие основные методы, которые частично переопределяются в классах-наследниках:

·  ICryptoTransform CreateEncryptor() – создание объекта шифрования с текущими значениями свойств Key и IV (если значением этих свойств является null, то вызываются методы GenerateKey и GenerateIV);

·  ICryptoTransform CreateEncryptor(byte[] rgbKey, byte[] rgbIV) – создание объекта шифрования с задаваемыми параметрами значениями секретного ключа и начального вектора;

·  ICryptoTransform CreateDecryptor() – создание объекта расшифрования с текущими значениями свойств Key и IV (если значением этих свойств является null, то вызываются методы GenerateKey и GenerateIV);

·  ICryptoTransform CreateDecryptor(byte[] rgbKey, byte[] rgbIV) – создание объекта расшифрования с задаваемыми параметрами значениями секретного ключа и начального вектора;

·  void GenerateKey() – генерация случайного значения секретного ключа;

·  void GenerateIV() – генерация случайного значения начального вектора;

·  bool ValidKeySize(int bitLength) – проверка допустимости длины секретного ключа для используемого криптоалгоритма;

·  void Clear() – очистка памяти, занятой конфиденциальной информацией (например, секретными ключами);

·  void Dispose() – освобождение всех ресурсов, используемых объектом класса SymmetricAlgorithm (метод должен вызываться после завершения выполнения криптографических операций с помощью этого объекта);

·  protected virtual void Dispose(bool disposing) – освобождение ресурсов, используемых объектом класса SymmetricAlgorithm (всех, если значение параметра true, или только не управляемых средой. Net, если значение параметра false).

Класс AesCryptoServiceProvider представляет реализацию криптоалгоритма блочного симметричного шифрования AES с помощью криптографического интерфейса приложений Windows (CryptoAPI, cryptographic application programming interface), функции которого обеспечивают доступ приложений к ресурсам криптопровайдеров Windows. Конструктор, вызываемый при создании объектов этого класса, параметров не содержит. Если значение длины секретного ключа не равно одному из трех допустимых значений (128, 192 или 256 бит), то генерируется исключение PlatformNotSupportedException.

Класс AesManaged представляет реализацию алгоритма симметричного шифрования AES в управляемом коде. Его конструктор не содержит параметров. При использовании объектов этого класса могут возникать исключения классов CryptographicException и InvalidOperationException (если данный класс не поддерживается платформой. Net в компьютерной системе пользователя).

Класс DESCryptoServiceProvider представляет реализацию криптоалгоритма блочного симметричного шифрования DES с помощью CryptoAPI. Конструктор этого класса не содержит параметров. Длина блока, ключа и обратной связи устанавливается в 64 бита. Если криптопровайдер не поддерживает алгоритм DES, то генерируется исключение класса CryptographicException.

Класс RC2CryptoServiceProvider представляет реализацию криптоалгоритма блочного симметричного шифрования RC2 с помощью CryptoAPI. Его конструктор не содержит параметров. Поддерживаются ключи длиной от 40 до 128 бит с шагом 8 бит. При использовании объектов этого класса могут возникать исключения классов CryptographicException и InvalidOperationException. Этот класс содержит дополнительные свойства:

·  int EffectiveKeySize – эффективная длина ключа в битах (задает количество действительно случайных битов в секретном ключе; при неправильном задании значения этого свойства генерируется исключение CryptographicUnexpectedOperationException);

·  bool UseSalt – признак добавления к секретному ключу 11 нулевых байт случайного значения (примеси, может использоваться при длине ключа 40 бит).

Класс RijndaelManaged содержит реализацию в управляемом коде алгоритма блочного симметричного шифрования Rijndael (оригинального варианта криптоалгоритма AES). Конструктор класса параметров не содержит. При использовании объектов этого класса возможна генерация исключения InvalidOperationException.

Класс TripleDESCryptoServiceProvider содержит реализацию криптоалгоритма блочного симметричного шифрования TripleDES («тройного» DES) с помощью CryptoAPI. Конструктор класса параметров не содержит. Значения длины ключа, длины блока и длины обратной связи устанавливаются соответственно в 192, 64 и 64 бита. Если криптопровайдер не поддерживает алгоритм TripleDES, то генерируется исключение класса CryptographicException.

При шифровании и расшифровании файлов в приложениях для платформы. Net применяются классы FileStream и CryptoStream.

Класс FileStream из пространства имен System. IO (поток байт, связанный с файлом) содержит следующие свойства:

·  string Name – имя файла, связанного с потоком;

·  long Position – текущая позиция в файле (при неправильном использовании этого свойства возможна генерация исключений NotSupportedException – поток не поддерживает изменение текущей позиции, IOException – ошибка ввода-вывода, ArgumentOutOfRangeException – отрицательное значение текущей позиции, EndOfStreamException – значение текущей позиции за концом файла);

·  long Length – длина потока в байтах (при использовании этого свойства возможна генерация исключений NotSupportedException, если поток не поддерживает изменение текущей позиции, и IOException, если при определении длины возникла ошибка);

·  bool CanRead – признак возможности чтения данных из файла;

·  bool CanWrite – признак возможности записи в файл;

·  bool CanSeek – признак возможности перемещения указателя текущей позиции в файле;

·  SafeFileHandle SafeFileHandle – дескриптор связанного с потоком файла, назначенный операционной системой (-1, если файл закрыт).

Возможно использование конструкторов класса FileStream со следующими параметрами:

·  путь к файлу вместе с его именем, режим открытия файла (константа перечисления FileMode: CreateNew – создание нового файла, Create – создание нового или перезапись существующего файла, Open – открытие существующего файла, OpenOrCreate – открытие существующего или создание нового файла, Truncate – открытие и усечение до 0 существующего файла, Append – открытие существующего с перемещением указателя текущей позиции в конец файла или создание нового файла);

·  путь к файлу вместе с его именем, режим открытия файла, режим использования файла (константа перечисления FileAccess: Read – только чтение, Write – только запись, ReadWrite – возможны чтение и запись);

·  путь к файлу вместе с его именем, режим открытия файла, режим использования файла, режим совместного доступа к файлу (константа перечисления FileShare: None – любые другие попытки доступа к файлу возможны только после его закрытия, Read – файл может быть повторно открыт для чтения, Write – файл может быть повторно открыт для записи, ReadWrite – файл может быть повторно открыт для чтения и записи, Delete – файл может быть удален до его закрытия);

·  путь к файлу вместе с его именем, режим открытия файла, режим использования файла, режим совместного доступа к файлу, длина буфера при вводе-выводе данных.

При создании объекта класса FileStream возможна генерация исключений IOException (попытка создания нового файла с уже существующим именем), UnauthorizedAccessException (попытка перезаписи существующего скрытого файла), FileNotFoundException (попытка открытия несуществующего файла), ArgumentException (попытка чтения из усеченного до 0 файла), NotSupportedException (попытка чтения за концом файла), SecurityException (отсутствие у процесса необходимых разрешений на действие с файлом).

Операции ввода-вывода данных при использовании объектов класса FileStream доступны через методы:

·  int Read(byte[] array, int offset, int count) – чтение count байт в буфер array со смещением offset байт относительно его начала и получение фактического количества прочитанных байт;

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15