我在Qt中有如下代码
QString message = "somemessage";
QString key = "somekey";
QString hashed = QMessageAuthenticationCode::hash(message,
key,
QCryptographicHash::Sha256).toBase64();
输出
8b0CA+VJBGMPVqKkygWeKuSVuquLc1vi/k9fPR8ZhXg=
在 php 中我会做这样的事情:
$msg = "somemessage";
$key = "somekey";
base64_encode(hash_hmac('sha256',$msg,$key,true));
它输出了我正在寻找的正确结果:
olsHfSnlLo5cpuBqSzfzERE3Hma0kFSo9YgCacOqCCw=
我做错了什么吗?
最佳答案
QMessageAuthenticationCode 的 Qt 文档说参数应该在 QByteArray 中。你是如何设法编译这段代码的?我用您的代码(用于 Qt)编写了一个小程序,并设法为 php 代码获得了相同的结果。 php code result
这段代码给我的结果与上面的 php 代码结果相同。
QByteArray ke = "somekey";
QByteArray msg = "somemessage";
QString hashed = QMessageAuthenticationCode::hash(msg,
ke,
QCryptographicHash::Sha256).toBase64();
qDebug() << hashed;
关于php - Qt/c++相当于php例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24348080/