收藏
回答

【后端】checkSession加密无限失败

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小游戏 需求 后端checkSession 微信iOS客户端 UNKNOWN UNKNOWN

https://developers.weixin.qq.com/minigame/dev/api-backend/open-api/login/auth.checkSessionKey.html

到底怎么加密?

像jssdk会有非常详细的拼字符串,等等非常详细。

你们这文档写的不清不楚。只告诉加密方式hmacsha256就没了。。。用hmacsha256加密什么?只加密session就可以了吗?

但是我不管怎么加密出来,都无限返回

 invalid signature hint: [82oAkA03451090]


具体到底是怎么加密的??尝试了所有有可能有问题的点。所有结果都是invalid signature....

我加密之后得到的字符串和你们文档提供的示例长度是一样的:

这是我的结果:

b8b6065192421b94937f0c0b3b8fe690ecb8721fc5e192eba54af5860e60bbf4

你们文档里的:

fefce01bfba4670c85b228e6ca2b493c90971e7c442f54fc448662eb7cd72509


我的加密代码:

private string GetHmacSha256CodeString(string raw, string secret)
{
    secret = string.IsNullOrEmpty(secret) ? "" : secret;
    byte[] keyByte = Encoding.UTF8.GetBytes(secret);
    byte[] messageBytes = Encoding.UTF8.GetBytes(raw);
    using (var hmacsha256 = new HMACSHA256(keyByte))
    {
        byte[] outBytes = hmacsha256.ComputeHash(messageBytes);
        string result = BitConverter.ToString(outBytes).Replace("-", "").ToLower();
        return result;
    }
}


麻烦指出问题所在。文档写得太不清楚了实在没招了。谢谢。

最后一次编辑于  2019-08-26
回答关注问题邀请回答
收藏

1 个回答

  • J.C
    J.C
    2019-08-26

    已经试出来了。 当经验分享吧。。。。

    正确的方法是

    把session_key当hmac的密钥,对“”(空字符串)加密!!!!得到的结果!!

    示例:GetHmacSha256CodeString("", "0oXdWVe2GEzM8SeHPp1L35==")

    我能说什么??编程全靠猜。。。滑稽。。。

    2019-08-26
    赞同 4
    回复
登录 后发表内容
问题标签