我正在尝试生成一个用于 API 身份验证的 hmac,但文档在 Go 上,我需要将其转换为 php 方式,我需要结果与 Go 结果相同。
在文档上说:要构建要签名的字符串,请将 HTTP 方法、请求内容类型、日期时间、请求 URI 和有效负载哈希与每个参数之间的换行符结合起来。
走开:
func ComputeHMAC(date string) string
request := []string{"POST","application/json",'Thu, 17 Jan 2019 02:45:06
GMT',"/ayden/init",'qz0HpayQzMDnBfJMfUB5zJGU62nX2Uef66m6YIpDAWA='}
request1 := strings.Join(request, "\n")
request2 := []string{request1,"\n"}
stringToSign := strings.Join(request2, "")
shaSignature := computeHmac256(stringToSign, "secret")
}
func computeHmac256(message string, secret string) string {
key := []byte(secret)
h := hmac.New(sha256.New, key)
h.Write([]byte(message))
result := h.Sum(nil)
return base64.StdEncoding.EncodeToString(result)
}
GO 中的 Hmac:6k44vpeNqYSgFkM2sZsJH+Ijg5amftPnqO3v45pMWN0=
我在 PHP 中尝试过的内容:
$stringToSign = [
'POST',
'application/json',
'Thu, 17 Jan 2019 02:45:06 GMT',
'/ayden/init',
'qz0HpayQzMDnBfJMfUB5zJGU62nX2Uef66m6YIpDAWA='
];
$string = implode("/n", $stringToSign);
$hmac = base64_encode(hash_hmac('sha256', $string, 'secret', true));
echo $hmac;
PHP 中的 Hmac:9mt4Ojzr9uVGaB6/jt96bbuEd0gJNh6Cph3q+dY3X38=
我在这里有点迷路,已经花了很多时间来解决这个问题,请帮忙。
翻过高山走不出你
白衣染霜花
FFIVE
随时随地看视频慕课网APP
相关分类