我正在尝试在php中生成HMAC_SHA1,并在openresty lua中验证它
PHP代码:
$hmac_sha1 = hash_hmac('sha1', 'test', 'gabri', true);
echo base64_encode($hmac_sha1);
产生:
/ReAJgDe67/lF3BNbaGSCx70J/c=
和lua中的代码相同:
local hmac_sha1 = ngx.hmac_sha1("test", "gabri")
ngx.log(ngx.NOTICE, ngx.encode_base64(hmac_sha1) );
产生
Yczcenrc2EAOpfm9UEWwME9XLRI=
为什么他们不同?
在PHP中,我在hash_hmac中包含了第4个参数,它将数据作为原始二进制文件返回
按照: https://github.com/openresty/lua-nginx-module#ngxhmac_sha1
将生成HMAC-SHA1摘要的原始二进制形式,使用 例如,ngx.encode_base64将结果编码为文本 如果需要,可以表示。
答案 0 :(得分:0)
根据文件
string hash_hmac(string $algo, string $data, string $key [, bool $raw_output = false])
digest = ngx.hmac_sha1(secret_key, str)
因此在hash_hmac('sha1', 'test', 'gabri', true);
test
中是数据,而gabri
是关键。
但在ngx.hmac_sha1("test", "gabri")
gabri
中是数据而test
是关键