QString в const byte * преобразование

Я пытаюсь использовать библиотеку Botan для создания хэша SHA-256 пары QStrings — пароля и соли. Я сделал много попыток получить составной пароль соли + в правильный тип для ввода в функцию процесса Botan. Документация по классу, который я пытаюсь использовать в Botan, находится по адресу Botan Sha-256 документация Моя последняя попытка

///
/// 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 (постоянный байт *, размер_t)

Как я могу привести или скопировать QString или QByteArray в константный байт *?

РЕДАКТИРОВАТЬ: После того, как я разместил вопрос, я попробовал еще несколько подходов. Тот, который работает, прикреплен ниже, но мне неудобно использовать 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);
}

0

Решение

Вы можете использовать следующий метод.

const char * QByteArray::data()
0

Другие решения

Были такие же проблемы: QByteArray конвертировать в / из unsigned char *

Но почему бы вам не использовать reinterpret_cast, например, так:

...
QString salt = "salt";
QString password = "password";
QString concatenated = QString("%1%2").arg(salt).arg(password);
unsigned char * input = (unsigned char *) concatenated. toLocal8Bit().data();
printf("%s", input);
...
1