Вызов .Сетевые встроенные классы из библиотеки dll win32

#c# #c #winapi #encryption

#c# #c #winapi #шифрование

Вопрос:

Я застрял в работе над библиотекой dll win32 (исходный код на C ), для которой мне нужна расшифровка triple des.

Клиент хочет использовать эти классы в системе .Net.Безопасность.Пространство имен Cryptography, поскольку зашифрованные данные подготавливаются другой программой .net.

Есть ли какой-либо (простой) способ добиться этого?

Я предложил использовать crypto api, но клиент говорит, что это несовместимо. Иногда расшифровывался текст со странными символами в конце…

Комментарии:

1. Вопрос не в . Net по сравнению с crypto API, это вопрос алгоритмов и протоколов. Они не зависят от платформы, и не имеет значения, реализованы ли они в .NET или неуправляемом crypto api.

2. У вашего клиента это совершенно неправильно. Тройной DES является стандартом. Существует бесчисленное множество совместимых реализаций. Будьте тверды со своим клиентом. Если ваш клиент недостаточно компетентен для расшифровки, то это проблема с их стороны, а не с базовым алгоритмом.

Ответ №1:

Обычный способ сделать это — использовать управляемый C для соединения между мирами C и C #.

Альтернативой могло бы быть создание удобной для COM управляемой библиотеки DLL.

Комментарии:

1. Я понимаю, но эта библиотека dll win32 должна быть загружена во время выполнения TCL, которой нельзя управлять C (на самом деле, я не совсем уверен)

2. @Johnny нехорошо указывать все ограничения проекта в комментариях после того, как люди нашли время ответить. Если вы не указали это в вопросе, значит, оно не существует. То, что у вас в голове, а не записано, для нас не существует.

3. @Johnny Альтернативой могло бы быть создание удобной для COM управляемой библиотеки DLL. Смотрите support.microsoft.com/kb/828736 .

4. @AlexD Спасибо, Алекс, ссылка дает мне ответ.

5. @Johnny Отлично :). Я только что соответствующим образом обновил свой ответ. (Тем не менее, может иметь смысл обсудить с вашим заказчиком, действительно ли в этом случае нужен .NET.)