我创建了一个加密/解密程序,加密时我将加密的 QByteArray 存储在文本文件中。
当尝试解密时,我检索了它,然后将其放入解密方法中,问题是我需要一种将其转换为 QByteArray 的方法不改变格式,否则无法正确解密。我的意思是,如果该文件给了我一个加密值 1234,并且我通过以下方式将其转换为 QByteArray1234.toLatin1()
它改变了值并且解密不起作用。有什么建议么?
My Code:
QFile file(filename);
QString encrypted;
QString content;
if (file.open(QIODevice::ReadOnly)) {
QTextStream stream( &file );
content = stream.readAll();
}
encrypted = content.replace("\n", "");
qDebug() << encrypted; // Returns correct encrypted value
QByteArray a;
a += encrypted;
qDebug() << "2 " + a; // Returns different value than previous qDebug()
QByteArray decrypted = crypto.Decrypt(a, key);
return decrypted;
我想你应该使用:
QString::fromUtf8(const QByteArray &str)
Or:
QString::QString(const QByteArray &ba)
将QByteArray转换为QString,然后通过QTextStream将其写入文件。
之后,通过QTextStream读取文件,使用:
QString::toUtf8()
将 QString 转换为 QByteArray。
QString::QString(const QByteArray &ba)
构造一个用字节数组 ba 初始化的字符串。给定的字节数组转换为 Unicode使用 fromUtf8().
附:
也许使用 QFile::write 和 QFile::read 是更好的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)