ПОЛОЦКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Кафедра вычислительных систем и сетей
Методические указания для выполнения лабораторной работы № 1.4 по курсу «Защита информационных ресурсов компьютерных систем и сетей»
На тему: «Шифрование в C#»
ассистент кафедры ВСиС
Составитель: Матюш М.В.
Полоцк, 2012
Содержание
Цель работы 3
Общие сведения 3
Ход работы 14
Цель работы
Получить практические навыки шифрования данных в среде .NET.
Общие сведения
Получить справку в MSDN вида (только на английском языке):
Пространство имен System.Security.Cryptography предоставляет криптографические службы, включающие безопасное кодирование и декодирование данных, а также целый ряд других функций, таких как хэширование, генерация случайных чисел и проверка подлинности сообщений.Дополнительные сведения см. в разделе Службы криптографии.
Классы
|
Класс |
Описание |
|
Aes |
Абстрактный базовый класс, от которого должны наследоваться все реализации стандарта AES (Advanced Encryption Standard). |
|
AesCryptoServiceProvider |
Выполняет симметричное шифрование и дешифрование с помощью реализации CAPI алгоритма симметричного шифрования AES. |
|
AesManaged |
Предоставляет управляемую реализацию алгоритма симметричного шифрования AES. |
|
AsnEncodedData |
Представляет данные в кодировке ASN.1. |
|
AsnEncodedDataCollection |
Представляет коллекцию объектов AsnEncodedData.Этот класс не наследуется. |
|
AsnEncodedDataEnumerator |
Предоставляет возможность перемещения по объекту AsnEncodedDataCollection.Этот класс не наследуется. |
|
AsymmetricAlgorithm |
Представляет абстрактный базовый класс, от которого наследуются все реализации алгоритмов асимметричного шифрования. |
|
AsymmetricKeyExchangeDeformatter |
Представляет базовый класс, из которого создаются все объекты, обеспечивающие расшифрование данных обмена ключами с помощью алгоритма асимметричного шифрования. |
|
AsymmetricKeyExchangeFormatter |
Представляет базовый класс, из которого создаются все объекты, обеспечивающие зашифрование данных обмена ключами с помощью алгоритма асимметричного шифрования. |
|
AsymmetricSignatureDeformatter |
Представляет абстрактный базовый класс, из которого создаются все реализации классов проверки подписи. |
|
AsymmetricSignatureFormatter |
Базовый класс, от которого наследуются все реализации асимметричных объектов создания сигнатур. |
|
CngAlgorithm |
Инкапсулирует имя алгоритма шифрования. |
|
CngAlgorithmGroup |
Инкапсулирует имя группы алгоритмов шифрования. |
|
CngKey |
Определяет базовую функциональность для ключей, используемых объектами криптографии следующего поколения (CNG). |
|
CngKeyBlobFormat |
Задает формат большого двоичного объекта ключа для использования с объектами Microsoft CNG. |
|
CngKeyCreationParameters |
Содержит дополнительные свойства для создания ключа. |
|
CngPropertyCollection |
Предоставляет строго типизированный набор свойств CNG. |
|
CngProvider |
Инкапсулирует имя поставщика хранилища ключей (KSP), используемое с объектами криптографии следующего поколения (CNG). |
|
CngUIPolicy |
Инкапсулирует дополнительные параметры конфигурации для пользовательского интерфейса, отображаемого механизмом CNG при доступе к защищенному ключу. |
|
CryptoAPITransform |
Выполняет криптографическое преобразование данных.Этот класс не наследуется. |
|
CryptoConfig |
Обращается к сведениям о криптографической конфигурации. |
|
CryptographicAttributeObject |
Содержит тип и коллекцию значений, связанных с этим типом. |
|
CryptographicAttributeObjectCollection |
Содержит набор объектов CryptographicAttributeObject. |
|
CryptographicAttributeObjectEnumerator |
Предоставляет функциональность перечисления для коллекции CryptographicAttributeObjectCollection.Этот класс не наследуется. |
|
CryptographicException |
Исключение, которое возникает в случае ошибки при выполнении криптографической операции. |
|
CryptographicUnexpectedOperationException |
Исключение возникает при выполнении непредвиденной операции во время криптографической операции. |
|
CryptoStream |
Определяет поток, который связывает потоки данных с криптографическими преобразованиями. |
|
CspKeyContainerInfo |
Предоставляет дополнительные сведения о паре криптографических ключей.Этот класс не наследуется. |
|
CspParameters |
Содержит параметры, передаваемые поставщику служб шифрования (CSP), который выполняет криптографические вычисления.Этот класс не наследуется. |
|
DataProtector |
Предоставляет базовый класс для предохранителей данных. |
|
DeriveBytes |
Абстрактный базовый класс, от которого наследуются все классы, получающие последовательности байтов заданной длины. |
|
DES |
Представляет базовый класс для алгоритма DES, из которого создаются все реализации DES. |
|
DESCryptoServiceProvider |
Определяет объект-оболочку для доступа к версии алгоритма DES, предоставляемой поставщиком служб шифрования (CSP).Этот класс не наследуется. |
|
DpapiDataProtector |
Предоставляет простые методы защиты данных. |
|
DSA |
Представляет абстрактный базовый класс, от которого наследуются все реализации алгоритма DSA. |
|
DSACryptoServiceProvider |
Определяет объект-оболочку для доступа к реализации алгоритма DSA, предоставляемой поставщиком служб шифрования (CSP).Этот класс не наследуется. |
|
DSASignatureDeformatter |
Проверяет подпись, созданную по алгоритму PKCS 1 v1.5 DSA (DSA). |
|
DSASignatureFormatter |
Создает подпись DSA. |
|
ECDiffieHellman |
Предоставляет абстрактный базовый класс, из которого создаются реализации алгоритма Диффи-Хеллмана на эллиптических кривых (ECDH).Этот класс предоставляет базовый набор операций, которые должны поддерживать все реализации алгоритма ECDH. |
|
ECDiffieHellmanCng |
Предоставляет реализацию CNG алгоритма Диффи-Хеллмана на эллиптических кривых (ECDH).Этот класс используется для выполнения криптографических операций. |
|
ECDiffieHellmanCngPublicKey |
Задает открытый ключ алгоритма Диффи-Хеллмана на эллиптических кривых (ECDH) для использования с классом ECDiffieHellmanCng. |
|
ECDiffieHellmanPublicKey |
Абстрактный базовый класс, от которого должны наследоваться все реализации ECDiffieHellmanCngPublicKey. |
|
ECDsa |
Предоставляет абстрактный базовый класс, инкапсулирующий алгоритм цифровой подписи DSA на эллиптических кривых (Elliptic Curve Digital Signature Algorithm, ECDSA). |
|
ECDsaCng |
Обеспечивает реализацию CNG алгоритма цифровой подписи DSA на эллиптических кривых (Elliptic Curve Digital Signature Algorithm, ECDSA). |
|
FromBase64Transform |
Преобразует поток CryptoStream из кодировки base64. |
|
HashAlgorithm |
Представляет базовый класс, из которого создаются все реализации криптографических хэш-алгоритмов. |
|
HMAC |
Абстрактный класс, от которого должны наследоваться все реализации хэш-кода проверки подлинности сообщения (HMAC). |
|
HMACMD5 |
Вычисляет Хэш-основанный код проверки подлинности сообщения (HMAC) с помощью MD5 хэш-функция. |
|
HMACRIPEMD160 |
Вычисляет Хэш-основанный код проверки подлинности сообщения (HMAC) с помощью RIPEMD160 хэш-функция. |
|
HMACSHA1 |
Вычисляет хэш-код проверки подлинности сообщения (HMAC) с помощью хэш-функции SHA1. |
|
HMACSHA256 |
Вычисляет хэш-код аутентификации сообщения (HMAC) с помощью хэш-функции SHA256. |
|
HMACSHA384 |
Вычисляет хэш-код проверки подлинности сообщения (HMAC) с помощью хэш-функции SHA384. |
|
HMACSHA512 |
Вычисляет хэш-код проверки подлинности сообщения (HMAC) с помощью хэш-функции SHA512. |
|
KeyedHashAlgorithm |
Представляет абстрактный класс, из которого создаются все реализации хэш-алгоритмов с ключом. |
|
KeySizes |
Определяет набор допустимых размеров ключа для симметричных алгоритмов шифрования. |
|
MACTripleDES |
Вычисляет код проверки подлинности сообщения (MAC) с помощью алгоритма TripleDES для входных данных CryptoStream. |
|
ManifestSignatureInformation |
Предоставляет информацию о подписи манифеста. |
|
ManifestSignatureInformationCollection |
Представляет коллекцию объектов ManifestSignatureInformation, доступную только для чтения. |
|
MaskGenerationMethod |
Абстрактный класс, от которого должны наследоваться все алгоритмы создания масок. |
|
MD5 |
Представляет абстрактный класс, от которого наследуются все реализации хэш-алгоритма MD5. |
|
MD5Cng |
Предоставляет реализацию CNG алгоритма MD5 (Message Digest 5) для формирования 128-разрядных хэш-значений. |
|
MD5CryptoServiceProvider |
Вычисляет значение хэша MD5 для входных данных с помощью реализации, предоставляемой поставщиком служб шифрования (CSP).Этот класс не наследуется. |
|
Oid |
Представляет идентификатор криптографического объекта.Этот класс не наследуется. |
|
OidCollection |
Представляет коллекцию объектов Oid.Этот класс не наследуется. |
|
OidEnumerator |
Предоставляет возможность перемещения по объекту OidCollection.Этот класс не наследуется. |
|
PasswordDeriveBytes |
Формирует ключ из пароля с помощью расширения алгоритма PBKDF1. |
|
PKCS1MaskGenerationMethod |
Вычисляет маски, соответствующие стандарту PKCS #1, для использования алгоритмами обмена ключами. |
|
ProtectedData |
Предоставляет методы для шифрования и расшифровки данных.Этот класс не наследуется. |
|
ProtectedMemory |
Предоставляет методы для защиты данных, хранящихся в оперативной памяти, и снятия защиты с них.Этот класс не наследуется. |
|
RandomNumberGenerator |
Представляет абстрактный класс, из которого создаются все реализации криптографических генераторов случайных чисел. |
|
RC2 |
Представляет базовый класс, из которого создаются все реализации алгоритма RC2. |
|
RC2CryptoServiceProvider |
Определяет объект-оболочку для доступа к реализации алгоритма RC2, предоставляемой поставщиком служб шифрования (CSP).Этот класс не наследуется. |
|
Rfc2898DeriveBytes |
Реализует функцию формирования ключа на основе пароля (PBKDF2) с использованием генератора псевдослучайных чисел HMACSHA1. |
|
Rijndael |
Представляет базовый класс, от которого наследуются все реализации алгоритма симметричного шифрования Rijndael. |
|
RijndaelManaged |
Осуществляет доступ к управляемой версии алгоритма Rijndael.Этот класс не наследуется. |
|
RijndaelManagedTransform |
Выполняет криптографическое преобразование данных с помощью алгоритма Rijndael.Этот класс не наследуется. |
|
RIPEMD160 |
Представляет абстрактный класс, от которого наследуются все реализации хэш-алгоритма MD160. |
|
RIPEMD160Managed |
Вычисляет хэш RIPEMD160 для входных данных с помощью управляемой библиотеки. |
|
RNGCryptoServiceProvider |
Реализует криптографический генератор случайных чисел, используя реализацию, предоставляемую поставщиком служб шифрования (CSP).Этот класс не наследуется. |
|
RSA |
Базовый класс, от которого наследуются все реализации алгоритма RSA. |
|
RSACryptoServiceProvider |
Выполняет зашифрование и расшифрование с помощью реализации асимметричного алгоритма RSA, предоставляемого поставщиком служб шифрования (CSP).Этот класс не наследуется. |
|
RSAOAEPKeyExchangeDeformatter |
Выполняет расшифрование данных обмена ключами, зашифрованных с использованием заполнения OAEP. |
|
RSAOAEPKeyExchangeFormatter |
Создает данные обмена ключами, используя заполнение OAEP и алгоритм RSA. |
|
RSAPKCS1KeyExchangeDeformatter |
Выполняет расшифрование данных обмена ключами по стандарту PKCS 1. |
|
RSAPKCS1KeyExchangeFormatter |
Создает данные обмена ключами по стандарту PKCS 1 с помощью RSA. |
|
RSAPKCS1SignatureDeformatter |
Проверяет подпись RSA PKCS 1 версии 1.5. |
|
RSAPKCS1SignatureFormatter |
Создает подпись RSA PKCS 1 версии 1.5. |
|
SHA1 |
Вычисляет хэш SHA1 для входных данных. |
|
SHA1Cng |
Предоставляет реализацию CNG алгоритма SHA. |
|
SHA1CryptoServiceProvider |
Вычисляет значение хэша SHA1 для входных данных с помощью реализации, предоставляемой поставщиком служб шифрования (CSP).Этот класс не наследуется. |
|
SHA1Managed |
Вычисляет хэш SHA1 для входных данных с помощью управляемой библиотеки. |
|
SHA256 |
Вычисляет хэш SHA256 для входных данных. |
|
SHA256Cng |
Предоставляет реализацию CNG алгоритма SHA для формирования 256-разрядных хэш-значений. |
|
SHA256CryptoServiceProvider |
Определяет объект-оболочку для доступа к реализации алгоритма SHA256, предоставляемой поставщиком служб шифрования (CSP). |
|
SHA256Managed |
Вычисляет хэш SHA256 для входных данных с помощью управляемой библиотеки. |
|
SHA384 |
Вычисляет хэш SHA384 для входных данных. |
|
SHA384Cng |
Предоставляет реализацию CNG алгоритма SHA для формирования 384-разрядных хэш-значений. |
|
SHA384CryptoServiceProvider |
Определяет объект-оболочку для доступа к реализации алгоритма SHA384, предоставляемой поставщиком служб шифрования (CSP). |
|
SHA384Managed |
Вычисляет хэш SHA384 для входных данных с помощью управляемой библиотеки. |
|
SHA512 |
Вычисляет хэш SHA512 для входных данных. |
|
SHA512Cng |
Предоставляет реализацию CNG алгоритма SHA для формирования 512-разрядных значений хэша. |
|
SHA512CryptoServiceProvider |
Определяет объект-оболочку для доступа к реализации алгоритма SHA512, предоставляемой поставщиком служб шифрования (CSP). |
|
SHA512Managed |
Вычисляет хэш SHA512 для входных данных с помощью управляемой библиотеки. |
|
SignatureDescription |
Содержит сведения о свойствах цифровой подписи. |
|
StrongNameSignatureInformation |
Содержит сведения о подписи строгого имени для манифеста. |
|
SymmetricAlgorithm |
Представляет абстрактный базовый класс, от которого наследуются все реализации алгоритмов симметричного шифрования. |
|
ToBase64Transform |
Преобразует CryptoStream в кодировку base64. |
|
TripleDES |
Представляет базовый класс для алгоритмов Triple DES, из которого создаются все реализации TripleDES. |
|
TripleDESCryptoServiceProvider |
Определяет объект-оболочку для доступа к реализации алгоритма TripleDES, предоставляемой поставщиком служб шифрования (CSP).Этот класс не наследуется. |
Структуры
|
Структура |
Описание |
|
CngProperty |
Инкапсулирует свойство ключа или поставщика CNG. |
|
DSAParameters |
Содержит типичные параметры для алгоритма DSA. |
|
RSAParameters |
Представляет стандартные параметры для алгоритма RSA. |
Интерфейсы
|
Интерфейс |
Описание |
|
ICryptoTransform |
Определяет основные операции криптографических преобразований. |
|
ICspAsymmetricAlgorithm |
Определяет методы, позволяющие классу AsymmetricAlgorithm получать информацию о контейнере ключей, а также импортировать и экспортировать большие двоичные объекты ключа, совместимые с интерфейсом Microsoft Cryptographic API (CAPI). |
Перечисления
|
Перечисление |
Описание |
|
CipherMode |
Задает режим блочного шифра для использования при шифровании. |
|
CngExportPolicies |
Задает политики экспорта для ключа. |
|
CngKeyCreationOptions |
Задает параметры создания ключа. |
|
CngKeyHandleOpenOptions |
Задает параметры открытия дескрипторов ключа. |
|
CngKeyOpenOptions |
Задает параметры открытия ключа. |
|
CngKeyUsages |
Задает криптографические операции, в которых может использоваться ключ CNG. |
|
CngPropertyOptions |
Задает параметры свойств ключа CNG. |
|
CngUIProtectionLevels |
Задает уровень защиты ключа в скриптах запроса пользовательского интерфейса. |
|
CryptoStreamMode |
Задает режим доступа к криптографическому потоку. |
|
CspProviderFlags |
Задает флаги, которые изменяют режим работы поставщиков служб шифрования. |
|
DataProtectionScope |
Задает область защиты данных, которая устанавливается с помощью метода Protect. |
|
ECDiffieHellmanKeyDerivationFunction |
Задает функцию формирования ключа, используемую классом ECDiffieHellmanCng для преобразования секретного соглашения в ключевой материал. |
|
ECKeyXmlFormat |
Определяет форматы сериализации ключей на эллиптических кривых в XML. |
|
FromBase64TransformMode |
Определяет, требуется ли игнорировать пустое пространство при преобразовании в кодировку base64. |
|
KeyNumber |
Задает тип ключа для создания — ассиметричный ключ подписи или ассиметричный ключ обмена. |
|
MemoryProtectionScope |
Задает область защиты памяти, которая устанавливается с помощью метода Protect. |
|
OidGroup |
Определяет группы идентификаторов объекта (oid) шифрования windows. |
|
PaddingMode |
Задает тип заполнения, используемого в случае, когда блок данных сообщения короче полного числа байтов, необходимого для криптографической операции. |
|
SignatureVerificationResult |
Задает большинство кодов результата для проверки подписи. |
Далее в зависеммости от варианта переходить по сслкам смотреть примеры нужных алгоритмов.