1

我想知道您是否可以帮助我解决我遇到的一个小问题:

我目前正在开发 C++/Qt 并收到以下错误消息:

P:\Produkt\Savor_V100\webapi.cpp:84: error: C2664: 'CryptoPP::PasswordBasedKeyDerivationFunction::DeriveKey' : cannot convert parameter 1 from 'const char *' to 'byte *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

函数中的参数未使用,因此我想在其中传递一个空字节。经过一番研究,我发现一个字节只是一个简单的无符号字符?

我的代码如下所示:

byte* unused;
qDebug() << CryptoPP::PasswordBasedKeyDerivationFunction::DeriveKey(CryptoPP::SHA1::StaticAlgorithmName(), CryptoPP::SHA1::BLOCKSIZE,  unused, user->getPassword(), sizeof(user->getPassword()), user->getSerial(), sizeof(user->getSerial()), 0 );
4

1 回答 1

2

正如评论中所说,这里的问题是函数的第一个参数,而不是你使用的第三个参数unused。由于我猜您确实需要此参数,因此您应该按照建议尝试:

qDebug() << CryptoPP::PasswordBasedKeyDerivationFunction::DeriveKey(
              reinterpret_cast<byte*>(CryptoPP::SHA1::StaticAlgorithmName()),
              CryptoPP::SHA1::BLOCKSIZE,
              0,
              user->getPassword(),
              sizeof(user->getPassword()), 
              user->getSerial(), 
              sizeof(user->getSerial()), 
              0 );
于 2013-06-13T04:41:25.733 回答