Php 在查询字符串中创建十六进制字符串参数

Php 在查询字符串中创建十六进制字符串参数,php,bash,sha,Php,Bash,Sha,我需要创建具有以下结构的查询字符串: $name&hash=$hash $hash变量应该是当前质询字符串的SHA1 has,该质询字符串与我的客户端密码连接在一起 我已经通过运行下面的bash脚本在控制台中测试了我的api凭据(它给出了正确的响应) 但是,当我尝试用PHP编程重新创建$hash变量时,由于hash参数不正确,身份验证失败 要创建$hash参数,我使用: $hash = sha1($challenge . $key); 但很明显,我在这里遗漏了一些东西。我假设bash脚本中的表

我需要创建具有以下结构的查询字符串: $name&hash=$hash

$hash变量应该是当前质询字符串的SHA1 has,该质询字符串与我的客户端密码连接在一起

我已经通过运行下面的bash脚本在控制台中测试了我的api凭据(它给出了正确的响应)

但是,当我尝试用PHP编程重新创建$hash变量时,由于hash参数不正确,身份验证失败

要创建$hash参数,我使用:

$hash = sha1($challenge . $key);
但很明显,我在这里遗漏了一些东西。我假设bash脚本中的表达式:

a-f0-9]\{40\}\).*$/\1/
检查字符串是否为40个字符的十六进制字符串,但我不确定如何将其集成到PHP代码中


如果我在控制台中检查$challenge变量的值,我会看到一个9位数的数值,比如:244971205,而PHP脚本中的同一个变量有一个字符串值。这可能是我的$hash参数没有正确格式化的原因吗

值得注意的是,如果我使用通过运行

echo "$hash"
在控制台中,直接在我的查询字符串中,api调用成功,但我希望以编程方式获得相同的值


如果有人能给我指出正确的方向,我将不胜感激。

原来我把事情搞得太复杂了。为了获得
$challenge
变量的正确值,我实际上需要做的是使用
JSON\u decode
解析JSON数据,然后访问包含数值的属性,如
$challenge=$obj['object']['property']

检查输入。您确定PHP的$challenge和$key与命令行中的相同吗
var\u export()
会有帮助。我相信会的,但会仔细检查。谢谢你的提示!如果我在控制台中检查$challenge的值,我会得到9位数字值,比如:244971205,而我的PHP脚本中的同一个变量有一个字符串值。当使用
printf | openssl dgst | sed
方法时,我似乎得到了与使用
sha1($challenge.$key)
时相同的结果,即使使用整数和数字字符串的混合。你确定
$challenge
$key
两者是相同的吗?我注意到如果在控制台中检查$challenge变量的值,我会得到一个9位数的数值,比如:244971205,而我的PHP脚本中的同一个变量有一个字符串值,所以我似乎错过了一个重要的步骤。
echo "$hash"