Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# php哈希“从hmac到c”——“webresponse”;暂时“未提供”;_C#_Php - Fatal编程技术网

C# php哈希“从hmac到c”——“webresponse”;暂时“未提供”;

C# 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}”;此

我尝试将php代码转换为c#

php

这是我的C#

我使用的哈希hmac的代码如下

Webresponse总是“NONCE\u NOT\u PROVIDED”

我用php检查了hash_hmac的结果——它们是相同的。 还可以尝试使用字符串touper和ToLower


我做错了什么?

你不是漏掉了一个符号(&)

变成

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}