有哪位高手帮我把下面的PHP程序转换为ASP。NET的?要求能够测试通过的
//测试数据
string str = "FlYSsIZRHe9xsyj3AfY11RRUNduhbETthOTJsmrIW1I.eyJ1c2VyIjp7ImNvdW50cnkiOiJjbiIsImxvY2FsZSI6IiJ9LCJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTMxNDE3NTc5MSwiZXhwaXJlcyI6MTMxNDE4Mjk5MSwib2F1dGhfdG9rZW4iOiIzNmEyZjgxYzUzODJhOGIwZjQzMWRkZDA0OTJlZTE5YiIsInVzZXJfaWQiOjIzMTA4NTM0MDJ9"; /**
* 解析 signed_request
*
* @param string $signed_request 应用框架在加载iframe时会通过向Canvas URL post的参数signed_request
*
* @return array
*/
function parseSignedRequest($signed_request) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$sig = self::base64decode($encoded_sig) ;
$data = json_decode(self::base64decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') return '-1';
$expected_sig = hash_hmac('sha256', $payload, $this->client_secret, true);
return ($sig !== $expected_sig)? '-2':$data;
}
//测试数据
string str = "FlYSsIZRHe9xsyj3AfY11RRUNduhbETthOTJsmrIW1I.eyJ1c2VyIjp7ImNvdW50cnkiOiJjbiIsImxvY2FsZSI6IiJ9LCJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTMxNDE3NTc5MSwiZXhwaXJlcyI6MTMxNDE4Mjk5MSwib2F1dGhfdG9rZW4iOiIzNmEyZjgxYzUzODJhOGIwZjQzMWRkZDA0OTJlZTE5YiIsInVzZXJfaWQiOjIzMTA4NTM0MDJ9"; /**
* 解析 signed_request
*
* @param string $signed_request 应用框架在加载iframe时会通过向Canvas URL post的参数signed_request
*
* @return array
*/
function parseSignedRequest($signed_request) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$sig = self::base64decode($encoded_sig) ;
$data = json_decode(self::base64decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') return '-1';
$expected_sig = hash_hmac('sha256', $payload, $this->client_secret, true);
return ($sig !== $expected_sig)? '-2':$data;
}
这是.NET技术区啊
偶表示 不大懂PHP
public string parseSignedRequest(string signed_request)
{
string data = string.Empty;
string[] tempList = signed_request.Split('.');
string encoded_sig = tempList[0];
string payload = tempList[1];
//你的encoded_sig不是有效的Base64编码
string sig = Base64Decode(encoded_sig);
//没转json,
data = Base64Decode(payload);
if (!data.Contains("HMAC-SHA256"))
{
return "-1";
}
//不知道你的$this->client_secret,也不知道$expected_sig是什么类型,故暂且string
string expected_sig=hash_hmac("sha256", payload, "$this->client_secret", true);
return sig == expected_sig ? "-2" : data;
}
public string Base64Decode(string base64)
{
char[] charBuffer = base64.ToCharArray();
byte[] bytes = Convert.FromBase64CharArray(charBuffer, 0, charBuffer.Length);
return Encoding.UTF8.GetString(bytes); }
public string hash_hmac(string str,string payload,string client_secret,bool b )
{
//不知道你的hash_hmac方法怎么写的
return "";
}
return sig != expected_sig ? "-2" : data;