我创建了一个加密/解密程序,加密时我将加密的QByteArray存储在一个文本文件中。
尝试解密时我检索它然后将其放入解密方法,问题是我需要一种方法将其转换为QByteArray 而不更改格式,否则它将无法正确解密。我的意思是,如果文件给了我加密值1234并且我通过转required|without_spaces|unique:user_detail,username
将其转换为QByteArray它会更改值并且解密不起作用。有什么建议吗?
我的代码:
1234.toLatin1()
答案 0 :(得分:24)
我想你应该使用:
QString::fromUtf8(const QByteArray &str)
或者:
QString::QString(const QByteArray &ba)
将QByteArray转换为QString,然后通过QTextStream将其写入文件。
之后,通过QTextStream读取文件,使用:
QString::toUtf8()
将QString转换为QByteArray。
QString :: QString(const QByteArray& ba)
构造一个用字节数组ba初始化的字符串。使用fromUtf8()将给定的字节数组转换为Unicode 。
P.S:
也许使用QFile :: write和QFile :: read是一种更好的方式。
答案 1 :(得分:4)
尝试使用toLocal8Bit()..它可以正常使用
答案 2 :(得分:0)
或者直接使用b64 = data.toUtf8().toBase64();
首先使用toUtf8()
将其转换为 QByteArray ,然后立即将其转换为toBase64()
答案 3 :(得分:-2)
如果我理解正确,文件中的文本将存储在QString内容中。我想你可以创建一个新的QByteArray。因为QByteArray的构造函数不允许将QString作为输入,所以我可能必须将QString附加到空QByteArray。
//After if:
QByteArray tempContent();
tempContent.append(content);
QByteArray decrypted = crypto.Decrypt(tempContent, key);
我在Qt库中没有太多经验,但我希望这会有所帮助。