On 16/10/18 08:16, Jérôme Godbout wrote: > Hi, > I'm trying to find the C++ equivalent of this python: > /import hashlib/ > /import hmac/ > /hmac.new(bytearray(m_api_secret, 'utf-8'), bytearray(payload, > 'utf-8'), hashlib.sha256).hexdigest()/ > / > / > Or my Javascript equivalent (both give the same results): > crypto.createHmac("sha256", m_api_secret).update(payload).digest("hex"); > / > / > I have try the following: > > * QMessageAuthenticationCode::hash(payload, > QByteArray::fromHex(m_api_secret), > QCryptographicHash::Sha256).toHex(); > * QMessageAuthenticationCode::hash(payload, > QByteArray::fromHex(m_api_secret), > QCryptographicHash::Sha3_256).toHex(); > * QMessageAuthenticationCode::hash(payload, m_api_secret, > QCryptographicHash::Sha256).toHex(); > * QMessageAuthenticationCode::hash(payload, m_api_secret, > QCryptographicHash::Sha3_256).toHex(); > * QMessageAuthenticationCode::hash(QByteArray::fromHex(payload), > QByteArray::fromHex(m_api_secret), > QCryptographicHash::Sha256).toHex(); > * QMessageAuthenticationCode::hash(QByteArray::fromHex(payload), > QByteArray::fromHex(m_api_secret), > QCryptographicHash::Sha3_256).toHex(); > > But I never get the same results as the Python or Javascript one. > Maybe I'm using the wrong class here. Anybody have a good pointer on > how to do this? > Any good hmac sha256 class to perform this?
In Python you encoded the key and payload as utf-8 before hashing, but you didn't mention the encoding in C++. What's in m_api_secret and payload? If they are hex strings then you definitely need the fromHex. Hamish
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest