- •Для студентов, обучающихся по направлению
- •Введение
- •Глава 1 Средства обеспечения конфиденциальности данных
- •1.1. Классы, реализующие алгоритмы симметричного шифрования
- •1.2. Использование классов библиотеки fcl для шифрования данных
- •Имена объектов программы для элементов управления
- •Имена объектов программ для элементов управления
- •1.3. Непосредственное обращение к криптопровайдерам в приложениях для Microsoft .Net
- •Глава 2 Средства обмена секретными ключами и обеспечения аутентичности и целостности данных
- •2.1. Классы, реализующие алгоритмы асимметричного шифрования
- •2.2. Классы для вычисления и проверки эцп
- •2.3. Использование классов асимметричной криптографии
- •Имена объектов программ для элементов управления
- •Имена объектов программ для элементов управления
- •Глава 3 Средства хеширования и обеспечения целостности данных
- •3.1. Классы алгоритмов хеширования
- •3.2. Классы для вычисления и проверки кодов аутентификации сообщений
- •3.3. Использование средств хеширования и контроля целостности
- •Имена объектов программ для элементов управления
- •Контрольные вопросы
- •Библиографический список
- •Оглавление
- •Глава 1 7
- •Глава 2 40
- •Глава 3 70
2.2. Классы для вычисления и проверки эцп
В библиотеке FCL имеются специальные классы для вычисления ЭЦП и ее проверки. Это классы-наследники абстрактных классов AsymmetricSignatureFormatter и AsymmetricSignatureDeformatter:
DSASignatureFormatter и DSASignatureDeformatter (вычисление и проверка ЭЦП по алгоритму DSA);
RSAPKCS1SignatureFormatter и RSAPKCS1SignatureDeformatter (вычисление и проверка ЭЦП по алгоритму RSA в соответствии со стандартом PKCS 1).
В классе AsymmetricSignatureFormatter определены следующие методы, частично переопределяемые в классах-наследниках:
byte[] CreateSignature(byte[] rgbHash) – вычисление ЭЦП для заданных данных;
byte[] CreateSignature(HashAlgorithm hash) – вычисление ЭЦП заданного объекта класса алгоритма хеширования;
void SetHashAlgorithm(string strName) – задание имени алгоритма хеширования, используемого при вычислении ЭЦП;
void SetKey(AsymmetricAlgorithm key) – задание ключа, используемого при вычислении ЭЦП.
Класс DSASignatureFormatter имеет конструктор без параметров и конструктор с параметром типа AsymmetricAlgorithm для создания объекта с указанным ключом для вычисления ЭЦП по алгоритму DSA.
В методе SetHashAlgorithm класса DSASignatureFormatter можно использовать только алгоритм хеширования SHA1, в противном случае генерируется исключение CryptographicUnexpectedOperationException.
Класс RSAPKCS1SignatureFormatter также имеет конструктор без параметров и конструктор с параметром типа AsymmetricAlgorithm, создающий объект класса для заданного ключа вычисления ЭЦП по алгоритму RSA.
В классе AsymmetricSignatureDeformatter определены следующие методы, частично переопределяемые в классах-наследниках:
void SetHashAlgorithm(string strName) – задание имени алгоритма хеширования, используемого при проверке ЭЦП;
void SetKey(AsymmetricAlgorithm key) – задание ключа, используемого при проверке ЭЦП;
bool VerifySignature(byte[] rgbHash, byte[] rgbSignature) – проверка ЭЦП rgbSignature для данных rgbHash;
bool VerifySignature(HashAlgorithm hash, byte[] rgbSignature) – проверка ЭЦП rgbSignature для объекта алгоритма хеширования hash.
Класс DSASignatureDeformatter содержит конструктор без параметров и конструктор с параметром типа AsymmetricAlgorithm, создающий объект для заданного ключа проверки ЭЦП по алгоритму DSA.
В методе SetHashAlgorithm класса DSASignatureDeformatter можно использовать только алгоритм хеширования SHA1, в противном случае генерируется исключение CryptographicUnexpectedOperationException.
В классе RSAPKCS1SignatureDeformatter также определены конструктор без параметров и конструктор с параметром типа AsymmetricAlgorithm, создающий объект для заданного ключа проверки ЭЦП по алгоритму RSA.
2.3. Использование классов асимметричной криптографии
В первом примере этого раздела составим программу вычисления и проверки электронной цифровой подписи по алгоритму DSA для данных из выбираемого пользователем файла с сохранением ЭЦП и открытого ключа, необходимого для проверки подписи, в отдельных файлах в той же папке, что и исходный подписываемый файл.
На рис. 4 приведено главное окно разрабатываемой программы.
Рис. 4. Окно программы вычисления и проверки ЭЦП для файла
В табл. 3 приведены имена объектов программы, которым соответствуют элементы управления главного окна.
Таблица 3