Я новичок в Crypto ++ и хочу "преобразовать" код шифрования текста, который я нашел в Интернете, в шифрование файлов Crypto ++. По сути, файл изображения - это просто набор текста, который нужно читать кусками, я прав?
Я хочу прочитать файл изображения и зашифровать его с помощью CryptoPP :: AES :
void encryptImage(std::filesystem::path const& file) {
std::ifstream inpf(file.string().c_str(), std::ios::binary);
CryptoPP::AutoSeededRandomPool rnd;
int keyLength = CryptoPP::AES::DEFAULT_KEYLENGTH; // 16 bytes = 128 bit key
int defBlockSize = CryptoPP::AES::BLOCKSIZE;
// Generate a random key
CryptoPP::byte key[CryptoPP::AES::DEFAULT_KEYLENGTH];
rnd.GenerateBlock(key, CryptoPP::AES::DEFAULT_KEYLENGTH);
// Generate a random IV
CryptoPP::byte iv[CryptoPP::AES::BLOCKSIZE];
rnd.GenerateBlock(iv, CryptoPP::AES::BLOCKSIZE);
char plainText[] = "Hello! How are you.";
int messageLen = (int)strlen(plainText) + 1;
//encrypt
CryptoPP::CFB_Mode<CryptoPP::AES>::Encryption cfbEncryption(key, CryptoPP::AES::DEFAULT_KEYLENGTH, iv);
cfbEncryption.ProcessData((CryptoPP::byte*)plainText, (CryptoPP::byte*)plainText, messageLen);
}
Если я правильно понимаю этот код, он устанавливает случайный ключ и случайный IV (не знаю, что это должно означать) и использует метод CFB_MODE :: Encryption зашифровать данный текст из переменной plainText .
Мой вопрос сейчас ... как я могу изменить этот код так, чтобы он шифровал файл, который я передаю в качестве параметра, и читал в с std :: ifstream вместо текста?