【发布时间】:2019-06-04 19:44:24
【问题描述】:
所以我正在使用这个 API 并使用 Laravel,并且我正在尝试构建一个身份验证字符串。这是给我的文档,但我遇到了一些麻烦,因为这对我来说相对较新。
这里是授权说明:
身份验证参数是一个字符串,它可以由 调用者或调用者可以选择将此值保存为参数 连同连接 ID 和 API 密钥。
身份验证是 HMAC SHA1 哈希的 base64 字符串。这是 使用API Key in in的二进制计算
######################### 格式全部小写,UTF8 编码作为密钥,计算机 HMAC SHA1 哈希在二进制文件上############################### 格式的连接 ID 全部低于 大小写和 UTF8 编码。
然后将结果二进制哈希进行 base64 编码,文本结果为 应该作为身份验证参数传递什么。在 C# 中的代码 计算身份验证可能如下所示:
HMACSHA1 hmac = new HMACSHA1( UTF8Encoding.UTF8.GetBytes(apiKey.ToString("N").ToLower()) ); string authentication = Convert.ToBase64String( hmac.ComputeHash( UTF8Encoding.UTF8.GetBytes(connectionId.ToString("N").ToLower()) ) );例如以下凭据:
连接ID:
5fecbc200f0e4a7cbf41040e11047e56API 密钥:
2de51c4fd0f04b9fabeb95225e87da70应导致计算出的身份验证值为
m5/Vc1RzhUETQvEtx/JdIglQpTg=
所以我一直在尝试的是:
$a = strtolower('5fecbc200f0e4a7cbf41040e11047e56');
$b = strtolower('2de51c4fd0f04b9fabeb95225e87da70');
$z = hash_hmac("sha1", utf8_encode(decbin($b)), utf8_encode(decbin($a)), true);
dd(base64_encode($z));
哪个输出QjG3kzUs7U1UukNd++3t24pBWNk=
我尝试了更多变体,但我只是迷失了这个。第一次真正解码或编码任何东西。非常感谢任何可以帮助我解决这个问题的提示、想法或 sn-ps。已经在这上面花了几个小时,这让我很烦..
【问题讨论】:
标签: php laravel hash base64 sha1