在 Node.js 中,我使用以下代码
hash = crypto.createHmac('sha256', SECRET).update(fileContent).digest('hex');
计算 HMAC。C++/Qt 代码模拟
QByteArray hash = QMessageAuthenticationCode::hash(
fileContent, SECRET, QCryptographicHash::Sha256).toHex();
为文本 JSON 文件内容生成与 Node.JS 中相同的结果。但是 Linux 命令行 HMAC 计算会产生不同的哈希码:
> openssl sha256 -hmac "SECRET" filename
命令行有什么问题?什么是正确的openssl
论点?
如果您提供相同的输入,这两个命令会给出相同的结果。如果您得到不同的输出,那么您的任何一个工具都有错误(这不太可能),或者您没有传递相同的输入。注意:
SECRET
应该是随机生成的密钥。此键的每个字节都有 1/256 的机会为 0。您不能在命令行上传递空字节。