如何计算hmax sha1加密的摘要值

问题描述 投票:0回答:1

[嗨,我必须使用Curl在api上发送数据。它要求请求标头中的摘要值。但是我在Curl的响应中遇到了签名不匹配的错误。

以下是创建摘要值的步骤:

用于计算摘要值,请按照以下步骤操作:

1)从原始密钥字节中获取hmac_sha1密钥(此处原始密钥字节将为Client_secret(将在电话)

2)在有效载荷字节上计算hmac

3)对hmac进行十六进制编码(十六进制编码,而不是示例中提到的Base64,然后返回获得的字符串为DigestValue

4)使用的算法是:HmacSHA1

请参考下面链接中的示例50,以获取更多帮助:http://www.javatips.net/api/java.security.signatureexception

十六进制编码,而不是如示例中提到的Base64,这里使用Client_secret代替密钥,如上所述例如

我尝试使用此代码创建摘要值:

$key=rrxfwr@*QB60rrxfwr@*QB60;
$client_secret='EghAfDrNv4RrGpRvbH1/00BGiC3vCP49cwVAEIzT7ob5JFiEQS5oMg==';
$pad=hash_hmac("sha1",$client_secret,true);
$digestvalue=bin2hex($pad);
php sha1
1个回答
1
投票

根据手册以及您的描述,应该是这样:

$key = 'rrxfwr@*QB60rrxfwr@*QB60';
$data = base64_decode('EghAfDrNv4RrGpRvbH1/00BGiC3vCP49cwVAEIzT7ob5JFiEQS5oMg==');
$pad = hash_hmac('sha1', $data, $key, true);
$digestvalue = bin2hex($pad);

似乎您的$data$key参数相反。

© www.soinside.com 2019 - 2024. All rights reserved.