Как добиться прогресса шифрования / дешифрования при шифровании больших файлов ботаном в Qt

У меня есть код ниже, чтобы зашифровать и расшифровать файл с ботаном в Qt.
При шифровании больших файлов это тратит много времени, и я хочу получить количество обработанных байтов при шифровании / дешифровании больших файлов. Является ли это возможным?

   void AES::Encrypt(SymmetricKey key, InitializationVector iv, string inFilename,  string outFilename)
{
std::ifstream in(inFilename.c_str(),std::ios::binary);
std::ofstream out(outFilename.c_str(),std::ios::binary);

Pipe pipe(get_cipher("AES-256/CBC", key, iv,ENCRYPTION),new DataSink_Stream(out));
pipe.start_msg();
in >> pipe;
pipe.end_msg();

out.flush();
out.close();
in.close();

qDebug() << "Encrypted!";
}

void AES::Decrypt(SymmetricKey key, InitializationVector iv, string inFilename,  string outFilename)
{
std::ifstream in(inFilename.c_str(),std::ios::binary);
std::ofstream out(outFilename.c_str(),std::ios::binary);

Pipe pipe(get_cipher("AES-256/CBC", key, iv,DECRYPTION),new DataSink_Stream(out));
pipe.start_msg();
in >> pipe;
pipe.end_msg();

out.flush();
out.close();
in.close();

qDebug() << "Decrypted!";
}

0

Решение

Если вы посмотрите в документации Botan о Механизм трубы / фильтра, есть обсуждение обработки больших файлов и ограниченного использования памяти. В конце этого раздела приведен фрагмент кода, который показывает обработку больших файлов с ограниченным буфером. Добавив туда некоторый код, я думаю, вы сможете не допустить, чтобы операция шифрования исчерпала память, а также могли запускать сигналы прогресса Qt из этого цикла.

0

Другие решения

Других решений пока нет …