我正在努力在我的应用程序中实现SimpleCrypt加密。为此,我需要传递一个 quint64 值作为键。在加密过程中,我想生成一个随机的quint64值,使用它进行加密,然后将其添加到文本文件中。在解密过程中,我想读取文本文件,获取密钥值并使用它进行解密。
我的"quint64 到 qstring"和"qstring 到 quint64"转换以及我的文本文件读取/写入机制无法正常工作。 我生成的文本文件包含这种类型的内容(多余的字符在换行符上,我不知道为什么粘贴到这里时它看起来不像这样(:
1658年 é
谁能解释如何以正确的方式做到这一点?
//generating random quint64 key
qsrand(QTime::currentTime().msec());
quint64 key = (quint64)qrand();
//storing key in text file
QString keyStr = QString::number(key);
QString keyFileName = "key.txt";
QFile file3(keyFileName);
if(!file3.open(QFile::WriteOnly|
QFile::Text))
{
return;
}
else{
QTextStream stream(&file3);
stream<<keyStr;
}
file3.close();
//Reading key value from text file (in a different function)
int key;
QString keyStr;
QString keyFile = QFileDialog::getOpenFileName(this, "Open key file");
QFile file5(keyFile);
if(!file5.open(QFile::ReadOnly|
QFile::Text))
{
QTextStream in(&file5);
in >> keyStr;
}
file5.close();
key = keyStr.toULongLong();
在qt中非常向前:
//from quint to string
quint64 number{18446744073709551615};
QString k{""};
k = QString::number(number);
qDebug() << "k is now: " << k;
//from string to quint
quint64 numberBack{1};
QString kBack{"18446744073709551615"};
numberBack = static_cast<quint64>(kBack.toULongLong());
qDebug() << "kback is now: " << numberBack;
任意数字:18446744073709551615实际上是 quint64 可以保持的最大值,您可以通过以下方式检查:
std::numeric_limits<quint64>::max()