Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Криптография (CryptoPP\RSA)


Автор: Wisdom 25.6.2011, 21:29
Доброе время суток.
Пытаюсь использовать библиотеку Crypto++ , в частности, шифрование алгоритмом RSA. Библиотеку собрал в 10-й студии в debug-режиме. 
Подключил её в Borland Builder C++ v.6.0, подключил требуемые заголовочные файлы. Компилится нормально. При сборке ошибки:
Код

[Linker Error] Unresolved external 'CryptoPP::SimpleKeyingInterface::SetKey(const unsigned char *, unsigned int, const CryptoPP::NameValuePairs&)' referenced from D:\SOLUTIONS\PROJECTS\BC++\RSA_\MYRSA.OBJ
[Linker Error] Unresolved external 'CryptoPP::SimpleKeyingInterface::GetNextIV(CryptoPP::RandomNumberGenerator&, unsigned char *)' referenced from D:\SOLUTIONS\PROJECTS\BC++\RSA_\MYRSA.OBJ
[Linker Error] Unresolved external 'CryptoPP::RandomPool::RandomPool()' referenced from D:\SOLUTIONS\PROJECTS\BC++\RSA_\MYRSA.OBJ
[Linker Error] Unresolved external 'CryptoPP::RandomPool::IncorporateEntropy(const unsigned char *, unsigned int)' referenced from D:\SOLUTIONS\PROJECTS\BC++\RSA_\MYRSA.OBJ
[Linker Error] Unresolved external 'CryptoPP::RandomNumberGenerator::GenerateByte()' referenced from D:\SOLUTIONS\PROJECTS\BC++\RSA_\MYRSA.OBJ
[Linker Error] Unresolved external 'CryptoPP::RandomNumberGenerator::GenerateBit()' referenced from D:\SOLUTIONS\PROJECTS\BC++\RSA_\MYRSA.OBJ
[Linker Error] Unresolved external 'CryptoPP::RandomNumberGenerator::GenerateWord32(unsigned int, unsigned int)' referenced from D:\SOLUTIONS\PROJECTS\BC++\RSA_\MYRSA.OBJ
[Linker Error] Unresolved external 'CryptoPP::RandomNumberGenerator::GenerateBlock(unsigned char *, unsigned int)' referenced from D:\SOLUTIONS\PROJECTS\BC++\RSA_\MYRSA.OBJ
[Linker Error] Unresolved external 'CryptoPP::RandomNumberGenerator::DiscardBytes(unsigned int)' referenced from D:\SOLUTIONS\PROJECTS\BC++\RSA_\MYRSA.OBJ
[Linker Error] Unresolved external 'CryptoPP::RandomPool::GenerateIntoBufferedTransformation(CryptoPP::BufferedTransformation&, const _STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >&, unsigned long long)' referenced from D:\SOLUTIONS\PROJECTS\BC++\RSA_\MYRSA.OBJ
[Linker Error] Unresolved external 'CryptoPP::AutoSeededRandomPool::Reseed(bool, unsigned int)' referenced from D:\SOLUTIONS\PROJECTS\BC++\RSA_\MYRSA.OBJ

Ума не приложу, что тут можно сделать.. может быть всё дело в собранной мною cryptlib.lib ? Или я как-то неверно её подключаю  (#pragma comment(lib, "cryptlib.lib")  ? 
Прошу помощи.

Автор: Wisdom 25.6.2011, 21:47
Есть ещё cryptopp.dll, может быть в ней дело... попробовал добавить к проекту - не помогло..

Автор: Wisdom 25.6.2011, 22:33
Решил собрать в Visual Studio 2010. Подключил cryptopp.dll и cryptopp.lib. Куча предупреждений + link error:  cryptopp.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x2C0.
Что за....  smile 

Автор: afiskon 26.6.2011, 13:42
Что мешает собрать библиотеку в борланде, раз вы в нем будете писать?

Автор: Wisdom 26.6.2011, 14:26
Цитата(afiskon @ 26.6.2011,  13:42)
Что мешает собрать библиотеку в борланде, раз вы в нем будете писать?

Сама библиотека собирается в студии, поскольку в архивах лежат проекты под неё. В доках про Borland Builder v.6.0 информации не нашёл.

Автор: Wisdom 26.6.2011, 15:03
Собственно, с траблой при подключении библиотеки я разобрался - надо было добавить описание библиотеки к проекту (dll.h).
Правда теперь другие ошибки, уже в самих подключаемых заголовочных файлах:
Код

[C++ Error] seckey.h(84): E2321 Declaration does not specify a tag or an identifier
[C++ Error] seckey.h(85): E2321 Declaration does not specify a tag or an identifier
[C++ Error] seckey.h(86): E2321 Declaration does not specify a tag or an identifier
[C++ Error] seckey.h(87): E2321 Declaration does not specify a tag or an identifier
[C++ Error] seckey.h(88): E2321 Declaration does not specify a tag or an identifier
[C++ Error] seckey.h(90): E2321 Declaration does not specify a tag or an identifier
[C++ Error] iterhash.h(64): E2321 Declaration does not specify a tag or an identifier

Ругается конкретно на:
Код

        CRYPTOPP_COMPILE_ASSERT(Q > 0);
    CRYPTOPP_COMPILE_ASSERT(N % Q == 0);
    CRYPTOPP_COMPILE_ASSERT(M % Q == 0);
    CRYPTOPP_COMPILE_ASSERT(N < M);
    CRYPTOPP_COMPILE_ASSERT(D >= N);
    CRYPTOPP_COMPILE_ASSERT(M >= D);


И на целый класс в iterhash. Что за ерунда.. бьюсь дальше. Если кто сталкивался - подскажите, куда копать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)