Php API可以';t验证hmac+;在函数中生成时使用base64
我试图使用一个函数来生成base64中编码的hmac哈希。但是,端点无法验证该消息 当我在函数外部生成base64中编码的hmac哈希时,它可以正常工作。端点验证消息 这就是我在使用函数时所做的(这就是我需要并且无法使其工作的方式): 我尝试在执行函数时调试转储变量,在执行curl之前,它们匹配。因此,它似乎正在生成信息并将其发送出去 这就是我在不使用函数时所做的(这就是它的工作原理): 我做错什么了吗?为什么我会得到不同的结果?这是端点API的问题吗 编辑:API返回的错误是“无效的\u签名”。我还尝试采用相同的值,并通过SoapUI发出请求。在使用第一种情况(函数)时,我会遇到相同的错误,而在使用第二种情况(外部函数)时,它工作正常。那么,为什么它在使用函数时会生成错误的散列呢?我的错误 我没有将$key和$secret传递给genMsg()Php API可以';t验证hmac+;在函数中生成时使用base64,php,hash,hmac,Php,Hash,Hmac,我试图使用一个函数来生成base64中编码的hmac哈希。但是,端点无法验证该消息 当我在函数外部生成base64中编码的hmac哈希时,它可以正常工作。端点验证消息 这就是我在使用函数时所做的(这就是我需要并且无法使其工作的方式): 我尝试在执行函数时调试转储变量,在执行curl之前,它们匹配。因此,它似乎正在生成信息并将其发送出去 这就是我在不使用函数时所做的(这就是它的工作原理): 我做错什么了吗?为什么我会得到不同的结果?这是端点API的问题吗 编辑:API返回的错误是“无效的\u签名”
function genNonce() {
list($usec, $sec) = explode(" ", microtime());
$nonce = (int)((float)$usec + (float)$sec);
return $nonce;
}
function genMsg($nonce) {
$signature = strtoupper(base64_encode(hash_hmac('sha256', $nonce . $key, $secret, true)));
return $signature;
}
$nonce = genNonce();
$signature = genMsg($nonce);
$auth = Array();
$auth[] = "key: " . $key;
$auth[] = "nonce: " . $nonce;
$auth[] = "signature: " . $signature;
...execute curl...
list($usec, $sec) = explode(" ", microtime());
$nonce = (int)((float)$usec + (float)$sec);
$signature = strtoupper(base64_encode(hash_hmac('sha256', $nonce . $key, $secret, true)));
$auth = Array();
$auth[] = "key: " . $key;
$auth[] = "nonce: " . $nonce;
$auth[] = "signature: " . $signature;
...execute curl...
function genNonce() {
list($usec, $sec) = explode(" ", microtime());
$nonce = (int)((float)$usec + (float)$sec);
return $nonce;
}
function genMsg($nonce, $key, $secret) {
$signature = strtoupper(base64_encode(hash_hmac('sha256', $nonce . $key, $secret, true)));
return $signature;
}
$nonce = genNonce();
$signature = genMsg($nonce, $key, $secret);