0

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!";
}
4

1 に答える 1

0

Pipe/Filter Mechanismsに関する Botan のドキュメントを見ると、大きなファイルの処理とメモリの境界使用に関する議論があります。そのセクションの最後に、バウンド バッファを使用した大きなファイルの処理を示すコード スニペットがあります。そこにコードを追加することで、暗号化操作がメモリ不足になるのを防ぎ、そのループから Qt 進行状況シグナルを発火できるようになると思います。

于 2012-12-08T17:24:29.507 に答える