Я пытаюсь использовать библиотеку Botan для создания хэша SHA-256 пары QStrings - пароля и соли. Я предпринял много попыток, пытаясь преобразовать объединенную соль + пароль в правильный тип для ввода в функцию процесса Botan. Документацию по классу, который я пытаюсь использовать в Botan, можно найти в документация botan sha-256 a> Моя последняя попытка
///
/// Computes salted data hash
///
QByteArray MyClass::HashData(QString salt, QString password)
{
QString concatenated = salt+password;
QByteArray input(concatenated.toLocal8Bit());
Botan::SHA_256 sha;
Botan::SecureVector<Botan::byte> saltedHash
= sha.process(&input,input.count()-1); // -1 to get rid of the \0
return QByteArray(saltedHash);
}
Когда я компилирую, я получаю сообщение об ошибке: нет подходящей функции для вызова 'Botan::SHA_256::process(QByteArray*, int)'... кандидатами являются: /usr/include/botan-1.10/botan/buf_comp.h: 101: Botan::SecureVector Botan::Buffered_Computation::process(const byte*, size_t)
Как преобразовать или скопировать QString или QByteArray в константный байт*?
EDIT: После того, как я опубликовал вопрос, я попробовал еще несколько подходов. Тот, который, кажется, работает, прикреплен ниже, но мне неудобно использовать reinterpret_cast, потому что это может привести к проблемам, о которых я не знаю в моем состоянии C++ noob.
Botan::SecureVector<Botan::byte> MyClass::HashData(QString salt, QString password)
{
QString concatenated = salt+password;
QByteArray buffer(concatenated.toLocal8Bit());
unsigned char * input = reinterpret_cast< unsigned char*>(buffer.data());
Botan::SHA_256 sha;
Botan::SecureVector<Botan::byte> saltedHash
= sha.process(input,buffer.count()-1); // -1 to get rid of the \0
return (saltedHash);
}