PHP生成HMAC-SHA1签名

PHP生成HMAC-SHA1签名,php,hmacsha1,Php,Hmacsha1,这让我快发疯了 我正在尝试生成此处建议的签名: 这样: function createSignature($queryUrl, $timestamp, $apiKey, $http = "GET", $agent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"){ $signature = $http . $agent . $queryUrl . "www.reed.co.uk" . $timestamp; $sign

这让我快发疯了

我正在尝试生成此处建议的签名:

这样:

function createSignature($queryUrl, $timestamp, $apiKey, $http = "GET", $agent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"){
    $signature = $http . $agent . $queryUrl . "www.reed.co.uk" . $timestamp;
    $signature = base64_encode(hash_hmac("sha1", $signature, $apiKey, true));
    return $signature;
}


$clientId = 1;
$timestamp = "2016-05-13T09:22:50Z";

$apiKey = "bacd2d2d-8b69-43c8-94c5-4a24c0269b79";

$queryUrl = "https://www.reed.co.uk/recruiter/api/1.0/cvsearch";

$reedQuery = \Httpful\Request::get($queryUrl)
    ->addHeaders(array(
        "X-ApiSignature" => createSignature($queryUrl, $timestamp, $apiKey),
        "X-ApiClientId" => $clientId,
        "X-TimeStamp" => $timestamp
    ))
    ->expectsJson()
    ->send();


print_r($reedQuery);
现在,出于某些原因,它会在我的服务器上返回此消息:
wrtjqkfyeqyljezwwut3swggpk=
而预期结果是:
JUgvCh5oeFYe1HDmfiMObOu1+nQ=

我什么都试过了,甚至从小端交换到大端。 没什么


怎么了(

我在同一个问题上挣扎;解决方案在不同的问题下

问题是字符串键(GUID)需要在前3个段()中反转其2个字符的十六进制数顺序

创建散列的示例(使用上面的密钥):

$apiToken='bacd2d2d-8b69-43c8-94c5-4a24c0269b79';
$stringToSign='POSTReedAgenthttps://www.reed.co.uk/recruiter/api/1.0/jobswww.reed.co.uk2017-11-11T13:50:06+00:00';
$hexStr=str_replace('-','$apitonk);
$c=爆炸('-',块分割($hexStr,2'-');
$hexArr=数组($c[3],$c[2],$c[1],$c[0],$c[5],$c[4],$c[7],$c[6],$c[8],$c[9],$c[10],$c[11],$c[12],$c[13],$c[14],$c[15];
$keyStr='';
对于($i=0;$i<16;++$i){
$num=hexdec($hexArr[$i]);
$keyStr.=chr($num);
}
$apiSignature=base64_encode(hash_hmac('sha1',$stringToSign,$keyStr,true));

这将生成一个哈希值,该哈希值与sha1只需要hash_hmac函数的。

中的哈希值相匹配

     hash_hmac('sha1', $inputText, $keyString)

请尝试另一种方法?$signature=base64_encode(hash_hmac(“sha1”),$apiKey,$signature,true))@BasvanStein您的意思是什么?要反转hash_hmac函数的第二个和第三个参数。因此,要对签名而不是密钥进行哈希运算。@BasvanStein nothing
     hash_hmac('sha1', $inputText, $keyString)