在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中获取单词的二进制吗?我被卡住了:-/另一个解决方案: