如果我在同时保存它的话,如何恢复我使用河豚的成功加密获得的密文?
secretKey
是关键字的哈希值。
QString clearText(textBrowser->toHtml());
QBlowfish bf(secretKey);
bf.setPaddingEnabled(true);
QByteArray encryptedBa = bf.encrypted(clearText.toUtf8());
// I want to save the encrypted text in a file to store it.
// Here I am "emulating" this intent:
// I am saving with flushing an outStream, I convert it to QString before:
QString test_SavedText(encryptedBa); //This value gets saved
QString cryptedText(test_SavedText); //"Read the stored file"
QByteArray decryptedBa = bf.decrypted(cryptedText.toUtf8());
encryptedBa
正在运作。如果我直接将其插入到decrypted
- 调用中,它就会被解密。
但是当我用cryptedText.toUtf8()
调用解密时,它不起作用。
一些调试显示:QString需要填充。好吧,在解密方法中,我将填充添加到QByteArray
(完全与加密方式相同)。但我的decryptedBa
输出仍然是空的。而且我仍然不明白为什么我的QString需要填充 - 它不是由QByteArray制作的,它已经包含了填充?
答案 0 :(得分:0)
我意识到现在是时候你问了这个问题,但是我只是偶然发现它,你不想在加密数据上使用.toUtf8(),而是在结果之后解密
答案 1 :(得分:0)
此代码对我有用
QString enc(QString data) {
QBlowfish bf(QString("This is The key").toUtf8());
bf.setPaddingEnabled(true);
QByteArray cipherText = bf.encrypted(data.toUtf8());
return QString(cipherText.toHex());
}
QString dec(QString enc_data) {
QBlowfish bf(QString("This is The key").toUtf8());
bf.setPaddingEnabled(true);
QByteArray decryptedBa = bf.decrypted(QByteArray::fromHex(enc_data.toUtf8()));
return QString::fromUtf8(decryptedBa.constData(), decryptedBa.size());
}