Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
защита данных / Криптография в MS Visual Studio.doc
Скачиваний:
56
Добавлен:
31.03.2015
Размер:
743.42 Кб
Скачать

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

Соседние файлы в папке защита данных