我需要使用Qt使用gpg加密一些文本。 QCA别无选择。 我的功能是在Linux中工作但在Windows中我得到了exitCode 2.
在命令行上使用相同的参数执行gpg2.exe正如预期的那样工作。
QString PGPProcess::encrypt(QString toAddress, QString message)
{
this->start(QStringList() << "--trust-model always" << "-a" << "-e" << "-r " + toAddress);
this->waitForStarted(PROCESS_WAIT);
this->write(message.toUtf8());
this->waitForBytesWritten(PROCESS_WAIT);
this->closeWriteChannel();
this->waitForFinished(PROCESS_WAIT);
if(this->exitCode()) {
qDebug() << this->exitCode();
return message;
} else {
return this->readAllStandardOutput();
}
}
我认为它与closeWriteChannel()有关。命令行必须发送gpg正在加密书面文本的CRTL-D(Linux)。
在Windows中,CTRL-D没有做任何事情,我必须按CTRL-C。 但是在QProcess上调用terminate()也不起作用。
答案 0 :(得分:0)
好的,只需将参数QStringList更改为以下内容即可...
this->start(QStringList() << "--trust-model" << "always" << "-a" << "-e" << "-r" << toAddress);