暗号化するとき、暗号化/復号化プログラムを作成しました。暗号化されたQByteArrayをテキストファイルに保存します。
復号化しようとすると、それを取得して復号化メソッドに入れますが、問題は、それをQByteArrayに変換する方法が必要なことです形式を変更せずに、そうしないと正しく復号化されません。つまり、ファイルが暗号化された値1234を提供し、1234.toLatin1()
を実行してQByteArrayに変換した場合、値が変更され、復号化は機能しません。助言がありますか?
私のコード:
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)
または:
QString::QString(const QByteArray &ba)
qByteArrayをQStringに変換し、QTextStreamによってファイルに書き込みます。
その後、QTextStreamでファイルを読み取り、次を使用します。
QString::toUtf8()
qStringをQByteArrayに変換します。
QString :: QString(const QByteArray&ba)
バイト配列baで初期化された文字列を構築します。指定されたバイト配列はUnicodeに変換されますfromUtf8()を使用。
PS:おそらくQFile :: writeを使用し、QFile :: readがより良い方法です。
toLocal8Bit()を使用してみてください。
または、単にb64 = data.toUtf8().toBase64();
を使用します
最初にtoUtf8()
でQByteArrayに変換してから、すぐにtoBase64()
に変換します