在qt中混淆密码

在qt中混淆密码,qt,encryption,passwords,Qt,Encryption,Passwords,我想在磁盘上存储密码(无哈希)。它不敏感,但我只是不想它在我的磁盘上的明文。 到目前为止,我尝试的是: 将字符串转换为二进制,并将其与密钥的二进制进行异或 bool ok = true; QByteArray qbaPW("mypass"); long long intPW = qbaPW.toHex().toLongLong( &ok, 16 ); QString binPW = QString::number( intPW, 2); 但问题是,它只适用于短密码。如果它们太长,

我想在磁盘上存储密码(无哈希)。它不敏感,但我只是不想它在我的磁盘上的明文。 到目前为止,我尝试的是: 将字符串转换为二进制,并将其与密钥的二进制进行异或

bool ok = true;

QByteArray qbaPW("mypass");

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

QString binPW = QString::number( intPW, 2);
但问题是,它只适用于短密码。如果它们太长,intPW会变得太长。有什么办法可以避免那件事吗


干杯

A
QByteArray
类似于C语言中的
char数组[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];
}
QByteArray常量键(“mykey”);
QByteArray密码(“密码”);
对于(int-ik=0,ip=0;
ip
因为这只是与密钥的异或,所以重复此过程来解密密码。一个好的密钥将随机生成,并且将比您设想的最长密码(比如64个字符)长


请注意,只有明确通知用户不要在应用程序中重复使用任何其他密码时,此方法才是合理安全的——否则,您实际上是在泄漏本应安全的密码。

不要使用
长密码
,坚持使用
QByteArray
并循环到最后。如果没有什么太敏感的问题,并且你不介意一个特别精明的人破解你的系统,你可以使用标准的
QByteArray::toBase64()
你能告诉我如何在QByteArray中获取单词的二进制吗?我被卡住了:-/另一个解决方案: