Я новичок в c ++ и пытаюсь использовать библиотеку CryptoPP для шифрования AES. Я использую Cmake и импортирую библиотеку, используя следующие строки:
cmake_minimum_required(VERSION 3.15)
project(CryptoPP_Example_AES)
set(CMAKE_CXX_STANDARD 20)
add_executable(CryptoPP_Example_AES main.cpp)
find_library(CryptoPP libcryptopp.a REQUIRED)
target_link_libraries(CryptoPP_Example_AES ${CryptoPP})
Для информации я установил libcrypto ++ 6 libcrypto ++ - dev libcrypto ++ dbg.
Как это все работает нормально и мой проект скомпилирован.
Проблема заключается в том, что когда я пытаюсь скомпилировать его, используя set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
MinGW, я больше не нахожу библиотеку.
Вот мой основной. cpp:
#include <iostream>
#include "cryptopp/modes.h"
#include "cryptopp/aes.h"
#include "cryptopp/filters.h"
int main(int argc, char* argv[]) {
byte key[ CryptoPP::AES::DEFAULT_KEYLENGTH ], iv[ CryptoPP::AES::BLOCKSIZE ];
memset( key, 0x00, CryptoPP::AES::DEFAULT_KEYLENGTH );
memset( iv, 0x00, CryptoPP::AES::BLOCKSIZE );
//
// String and Sink setup
//
std::string plaintext = "Now is the time for all good men to come to the aide...";
std::string ciphertext;
std::string decryptedtext;
//
// Dump Plain Text
//
std::cout << "Plain Text (" << plaintext.size() << " bytes)" << std::endl;
std::cout << plaintext;
std::cout << std::endl << std::endl;
//
// Create Cipher Text
//
CryptoPP::AES::Encryption aesEncryption(key, CryptoPP::AES::DEFAULT_KEYLENGTH);
CryptoPP::CBC_Mode_ExternalCipher::Encryption cbcEncryption( aesEncryption, iv );
CryptoPP::StreamTransformationFilter stfEncryptor(cbcEncryption, new CryptoPP::StringSink( ciphertext ) );
stfEncryptor.Put( reinterpret_cast<const unsigned char*>( plaintext.c_str() ), plaintext.length() + 1 );
stfEncryptor.MessageEnd();
//
// Dump Cipher Text
//
std::cout << "Cipher Text (" << ciphertext.size() << " bytes)" << std::endl;
for(char i : ciphertext) {
std::cout << "0x" << std::hex << (0xFF & static_cast<byte >(i)) << " ";
}
std::cout << std::endl << std::endl;
//
// Decrypt
//
CryptoPP::AES::Decryption aesDecryption(key, CryptoPP::AES::DEFAULT_KEYLENGTH);
CryptoPP::CBC_Mode_ExternalCipher::Decryption cbcDecryption( aesDecryption, iv );
CryptoPP::StreamTransformationFilter stfDecryptor(cbcDecryption, new CryptoPP::StringSink( decryptedtext ) );
stfDecryptor.Put( reinterpret_cast<const unsigned char*>( ciphertext.c_str() ), ciphertext.size() );
stfDecryptor.MessageEnd();
//
// Dump Decrypted Text
//
std::cout << "Decrypted Text: " << std::endl;
std::cout << decryptedtext;
std::cout << std::endl << std::endl;
return 0;
}
Итак, когда я использую set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
, моя IDE сообщает, что нет файлов заголовков cryptopp, как вы можете видеть на экране: CLion IDE говорит, что нет файлов заголовков
Может ли кто-нибудь помочь мне в этом? Я долго искал в Интернете, но не нашел решения.