C# php哈希“从hmac到c”——“webresponse”;暂时“未提供”;
我尝试将php代码转换为c# php 这是我的C# 我使用的哈希hmac的代码如下 Webresponse总是“NONCE\u NOT\u PROVIDED” 我用php检查了hash_hmac的结果——它们是相同的。 还可以尝试使用字符串touper和ToLowerC# php哈希“从hmac到c”——“webresponse”;暂时“未提供”;,c#,php,C#,Php,我尝试将php代码转换为c# php 这是我的C# 我使用的哈希hmac的代码如下 Webresponse总是“NONCE\u NOT\u PROVIDED” 我用php检查了hash_hmac的结果——它们是相同的。 还可以尝试使用字符串touper和ToLower 我做错了什么?你不是漏掉了一个符号(&) 变成 apikey={apikey}&nonce={nonce} 我建议您更仔细地阅读这些类型的错误代码。替换行字符串uri=$“{apikey}nonce={nonce}”;此
我做错了什么?你不是漏掉了一个符号(&) 变成
apikey={apikey}&nonce={nonce}
我建议您更仔细地阅读这些类型的错误代码。替换行字符串uri=$“{apikey}nonce={nonce}”;此行字符串uri=$“{apikey}&nonce={nonce}”;我认为“&”是PHP语法的一部分。现在看起来好多了。只需获取“无效的\u签名”,这可能是由于您正在传递的参数造成的。您应该调试代码(php和c),因为您在c中传递的日期值的格式不同。问题已解决。必须将HMACSHA256更改为HMACSHA512以计算哈希。它没有写在API的文档中,感谢Good luck@GustavoBesade的帮助
WebRequest _WebRequest;
WebResponse _WebResponse;
string apikey = "xxx";
string apisecret = "yyy";
string nonce = ((int)(DateTime.UtcNow - new DateTime(1970,1,1)).TotalSeconds).ToString();
string uri = $"https://website.com/api/getsomething?apikey={apikey}nonce={nonce}";
string _Hash_hmac = Hash_hmac(uri, apisecret);
_WebRequest = WebRequest.Create(uri);
_WebRequest.Headers["apisign"] = _Hash_hmac;
_WebResponse = _WebRequest.GetResponse();
apikey={apikey}nonce={nonce}
apikey={apikey}&nonce={nonce}