我在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=
我做错了吗?
答案 0 :(得分:1)
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;