2010-04-08 29 views
1

Все, что я могу сделать, это то, что одним из них является BC для всех алгоритмов DES, которые должны быть получены, а более поздняя версия - это оболочка для реализации поставщика криптографических услуг алгоритма DES.В чем разница между классом DES и классом DESCryptoServiceProvider?

Причина, по которой я прошу, заключается в том, что я перехожу .Net Security и официальная учебная книга MS просто относятся к классу DES, но другая официальная книга MS относится к классу DESCrypto. В чем разница между этими двумя? Когда вы будете использовать любой из них? Что мне нужно знать в отношении экзамена 70-536.

Я задаю свой вопрос с образовательного P.O.V относительно экзамена 70-536.

Обновление:

Кто-то хочет пролить некоторый свет на имуществе IV?

+0

Это хромой экзамен, рассказывающий о некоем неясном углу устаревшей технологии. DES слишком мал, и никто не должен использовать 3DES, когда AES быстрее и безопаснее. – rook

+0

спасибо за комментарий, верьте или нет, я уже сидел на бумаге и проваливался очень небольшим отрывом. Я видел это на экзаменационной бумаге. Поэтому я должен читать, но я слышу тебя, мужчина! – IbrarMumtaz

ответ

3

Да, класс DES является абстрактным базовым классом, DESCryptoServiceProvider - это конкретная реализация для него. Цепочка наследования немного скучна, она единственная.

Большинство классов криптографии следуют этому шаблону. Это documented следующим образом: Система безопасности

В .NET Framework реализует расширяемую структуру производного класса наследования. иерархия выглядит следующим образом:

  • алгоритма типа класса, такие как SymmetricAlgorithm или HashAlgorithm. Этот уровень является абстрактным.
  • Класс алгоритма, который наследуется от класса типа алгоритма; например, RC2 или SHA1. Этот уровень является абстрактным.
  • Реализация класса алгоритма, который наследует от алгоритма класс; например, RC2CryptoServiceProvider или SHA1Управляется. Этот уровень полностью выполнен .

Используя этот шаблон производных классов, легко добавить новый алгоритм или новой реализации существующего алгоритма. Например, для создания нового алгоритма с открытым ключом наследует класс AsymmetricAlgorithm . Чтобы создать новую реализацию определенного алгоритма, вы должны создать неабстрактный производный класс того алгоритма.

Не так уверен, как часто кто-то фактически добавляет новый алгоритм открытого ключа.

+0

+1 правильный, хотя я всегда считал его странным, есть ли на самом деле реализации DES, плавающие вокруг, кроме 'DESCryptoServiceProvider'? – Aaronaught

+0

спасибо за это, это действительно очищает многое. – IbrarMumtaz

+0

Взаимозаменяемость позволяет альтернативные реализации, включая аппаратные ускоренные версии. –

1

Только для уточнения: классы алгоритмов, заканчивающиеся на CryptoServiceProvider, выгружают работу во встроенные криптографические библиотеки Windows; и те, которые заканчиваются в Managed, записываются на C#.

Смежные вопросы