我想在我的磁盘上存储密码(无哈希)。它没什么敏感,但我只是不希望它在我的磁盘上的明文。 我到现在为止尝试的是: 将字符串转换为二进制,并使用键的二进制对其进行异或。
bool ok = true;
QByteArray qbaPW("mypass");
long long intPW = qbaPW.toHex().toLongLong( &ok, 16 );
QString binPW = QString::number( intPW, 2);
但事实是,它只适用于短密码。如果它们太长,intPW对于longlong来说太大了。任何想法如何避免这件事?
欢呼声
答案 0 :(得分:0)
QByteArray
就像C中的char array[len]
一样。您可以访问个人会员并随心所欲地做任何事情。例如:
QByteArray const key("mykey");
QByteArray password("password");
for (int ik = 0, ip = 0;
ip < password.length();
++ ip, ik = (ik+1 < key.length() ? ik+1 : 0)) {
password[ip] = password[ip] ^ key[ik];
}
由于这只是带密钥的XOR,所以重复此过程来解密密码。一个好的密钥将随机生成,并且会比您设想的最长密码长(比如64个字符)。
请注意,如果用户明确告知不要在您的应用程序中重复使用任何其他密码,则此方法只是相当安全 - 否则您实际上是泄漏应该是安全的密码。< / p>