在qt中混淆密码

时间:2013-11-15 06:28:54

标签: qt encryption passwords

我想在我的磁盘上存储密码(无哈希)。它没什么敏感,但我只是不希望它在我的磁盘上的明文。 我到现在为止尝试的是: 将字符串转换为二进制,并使用键的二进制对其进行异或。

bool ok = true;

QByteArray qbaPW("mypass");

long long intPW = qbaPW.toHex().toLongLong( &ok, 16 );

QString binPW = QString::number( intPW, 2);

但事实是,它只适用于短密码。如果它们太长,intPW对于longlong来说太大了。任何想法如何避免这件事?

欢呼声

1 个答案:

答案 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>