Алгоритм/библиотека шифрования для .NET 2.0 + C++
-
11-07-2019 - |
Вопрос
Мне нужна стандартная библиотека шифрования, поставляемая Microsoft, которая работает как для .NET 2.0, так и для C++.Что ты предлагаешь?
Мы обнаружили, что AES предлагается только в .NET 3.5 (и доступен на C++).
Мы обнаружили, что Rijndael используется в .NET 2.0, но недоступен в стандартных библиотеках C++.
Если я ошибаюсь (очень хороший шанс), можете ли вы указать мне правильное направление?
В худшем случае, я полагаю, я могу вызвать алгоритм Rijndael из .NET с помощью PInvoke, но я бы предпочел иметь собственное решение.
Решение
Мы успешно делаем нечто подобное, и я надеюсь, что это поможет вам:
C++ КриптоAPI
- КриптоAPI это чистый Win32 (c/c++), встроенный во все ОС Microsoft.
- Использовать Расширенный поставщик криптографии (
MS_ENHANCED_PROV
) - Использовать Тройной DES (
CALG_3DES
) алгоритм
Поставщик .NET TripleDes
- Использовать Триплдескриптосервицепровидер на стороне .NET.
Дополнительные примечания
- Мы избегайте КАПИКОМ как чума, поскольку сопровождающие ее кошмары развертывания не стоят затраченных усилий.
- Порядок байтов на стороне .NET может иногда иметь значение.Например, чтобы использовать ключ, сгенерированный на стороне C++ (CryptoAPI), вам необходимо перевернуть массив байтов перед его использованием в TripleDESCryptoServiceProvider.
Если вам нужна более подробная информация, оставьте комментарий, и я могу рассказать больше.Удачной крипты!
Другие советы
AES и Rijndael - это по сути один и тот же алгоритм с ограничением на размер блока и режим шифрования. Так что, пока вы можете жить с ограничения (которые не являются обременительными), вы можете использовать их взаимозаменяемо.
3DES доступен через Capicom. См. здесь для получения дополнительной информации.
Windows включает библиотеку шифрования AES C / C ++ как часть Провайдер криптографических услуг AES . Он подходит для использования из собственных приложений C / C ++. Р>