У меня есть сервер. Я хочу добавить к нему шифрование AES.
Я пытался использовать Crypto ++, после многих поисков он скомпилирован, но он всегда выдает исключения, которые происходят из «CryptoPP :: selfTestFailure».
Я где-то читал, что он имеет что-то с этим определением в файле fips140.cpp:
// Define this to 1 to turn on FIPS 140-2 compliance features, including additional tests during
// startup, random number generation, and key generation. These tests may affect performance.
#ifndef CRYPTOPP_ENABLE_COMPLIANCE_WITH_FIPS_140_2
#define CRYPTOPP_ENABLE_COMPLIANCE_WITH_FIPS_140_2 0
endif
но когда я изменяю определение на 1, проект, из которого я взял DLL, не компилируется.
что я сделал не так? / есть ли другой способ имплантации алгоритма AES?
… после долгих поисков он компилируется, но он всегда выдает исключения, которые происходят из «CryptoPP :: selfTestFailure». Я где-то читал, что он имеет что-то с этим определением в файле fips140.cpp:
FIPS DLL Windows DLL специального назначения со значительными ограничениями. Одним из ограничений является операционная среда или OE. OE включает в себя версии ОС и уровни пакетов обновления.
Для библиотеки FIPS, вот утвержденные OE:
Если операционная система неверна или уровень пакета обновлений неправильный, это может привести к ошибке самопроверки. Одна из причин, по которой это может привести к сбою, заключается в том, что DLL находит определенные конкретные функции памяти из среды выполнения C ++. Если он не находит их, он создает исключение.
Существует не очень очевидная зависимость, и это версия Visual Studio. Последняя версия библиотеки, которая была проверена, — 5.3, и для нее вам нужна Visual Studio 2005.
Обычно вам нужно сейчас настроить машину для сборки / тестирования с конкретной ОС, уровнем пакета обслуживания и Visual Studio, а затем собрать и протестировать его. Затем, когда вы устанавливаете Crypto ++ и вашу программу в производство, вы используете вкладка совместимости обеспечить время выполнения OE.
когда я изменяю определение на 1, проект, из которого я взял DLL, не компилируется. что я сделал не так?
Если вы хотите или нуждаетесь в более конкретных ответах, вам нужно предоставить больше информации, например, о вашей версии Windows, вашей версии Visual Studio и стеке вызовов.
Я также рекомендую вам избегать FIPS DLL, если это возможно. Большинство пользователей не осознают его особой цели и не знают, как правильно его использовать. Это боль в заднице работать и постоянный источник проблем.
Если вам нужна DLL, то создайте DLL-оболочку, которая экспортирует символы, которые вы хотите экспортировать. Затем ссылка на статическую версию библиотеки Crypto ++.
Других решений пока нет …