gpt4 book ai didi

c++ - 将 Botan 加密结果输出到 QDomDocument,反之亦然

转载 作者:行者123 更新时间:2023-11-30 04:29:07 24 4
gpt4 key购买 nike

我在 Qt 中使用 Botan 库进行加密。我让它工作到我可以从一个文件加密和解密到另一个文件的地方,但我试图改变它以从一个文件加密到一个 QDomDocument(加密文件将只是一个 XML 文件),然后从 QDomDocument 解密回来到一个文件。

这是我到目前为止实际加密的内容(filePlainText/fileEnc 只是 txt 文件路径)。

std::ifstream in(filePlainText.c_str(),std::ios::binary);
std::ofstream out(fileEnc.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();

DataSink_Stream 接受 ofsteam 或 ostream。所以我想我需要在从文件解密到变量时使用 ostream。但是我怎样才能将 ostream 的内容存储到我可以输入 QDomDocument 的东西中呢?

然后为了加密回一个文件,使用一个 istream 到一个 ofstream,但是我怎样才能将 QDomDocument 内容输入到一个 istream?

最佳答案

QDomDocument可以读取和写入 QByteArray您可以使用 std::ostringstream 读取/写入 std::string|/std::istringstream .

所以如果你把这些结合起来,你会得到类似的东西:

// before the encoding
const QByteArray & buffer = document.toByteArray(-1);
std::istringstream in(std::string(buffer.data(), buffer.size()));
... // encoding

对于解码部分:

// before the decoding
std::ostringstream out;
... // decoding
// after the decoding
const std::string & buffer = out.str();
document.setContent(QByteArray(buffer.c_str(), buffer.size()));

关于c++ - 将 Botan 加密结果输出到 QDomDocument,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9658760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com