收藏
回答

微信服务号安全模式或兼容模式消息加解密验签异常解密字节数异常,跪求解决?

一、微信服务号的消息加解密问题:

1、总是签名异常(VerifySignature用signature不将sMsgEncrypt加入字典序可以通过;但按照加密说明和Demo将sMsgEncrypt加入字典序并用接收到的msg_signature就不行);

2、对密文进行AES_decrypt后,得到的内存流的字节数组的长度异常的大32768;大端序转小端序,整数异常大 BitConverter.ToInt32(btmpMsg, 16) = 2082045282:

3、下载C#演示demo的用其自带的参数能编译运行通过,但改为我接收到的参数及配置参数,就连签名都通不过了。

折腾一个月了,跪求解决。

二、微信服务号原始ID:gh_ef269fGW0870

三、基本信息如下

原始配置:

  const FToken='dengqiang';  // //微信公众号的服务器配置-令牌(Token)

  const FEncodingAESKey='EYzh9ImZW3eVbCKgzIEXoNnqJcryTi1eR0LEcKXzGTR'; // 43个字符

    //最近1次的 l0YHxVBSNe9bUgj8G7DWHDnFWpTyi5HElL9Jukx13sx

    //最近2次的 EYzh9ImZW3eVbCKgzIEXoNnqJcryTi1eR0LEcKXzGTR

  const Fappid='wxd6d2bksYr98c3ef2'; //开放平台下公众号的Appid---18个字符   //'gh_ef269fGW0870';  //微信公众号的原始ID---15个字符


接收到的Post消息:

<xml>

    <Encrypt><![CDATA[Kn4jMkBu1cGBLv2LZ7H EDNbA160NaLjLA7PMXvlxotkHMmbzTBFgoOFcJLPw1hEE4UwBXo6Ks52zAaQ47JBQ7LhiinKKb5Ik 5O9eeQSTQCXZ1m76 f6sygGt vHjUtf /RsHF9n7FGvpKm9uORYKeyhk/I4N6Yoc1fk ac76wL9dIFXEEaLRY7LzF7P5mK71BZ0zeKTHZ19v3Hd5 DqEITe2sDqU Be2wQ/DWamyOWtosN60FKcWKr4ztJm rerLih7yup0BapW/N9SwO7yd/UUPDinqHEZHOh0BZkdY6S/M7OaDGq26 z4XvdsV0JrqhD3dolPaJtLCJmYcxz96cxAJD9EtqrCrCg9pN6dvJolaEOi/nrKLVHwi1LwJUo2Gmfl/kHfBBBnCmzCV5qPP3ff2GCaxi5mnD0ct7RHVICp3deDCHt TDL91m9O XtrHxP0/X2BD8zcHZTeZIahw==]]></Encrypt>

    <ToUserName><![CDATA[gh_ef269fGW0870]]></ToUserName>

</xml>

encrypt_type=aes

msg_signature=efce89b1df14ab776f65814e598f00f9f8224a13

nonce=359888066

openid=oliZuuF1RFZ-5JS0lI87KjJEBclQ

signature=675b9558765630124fcc9acec404156a96624ee0

timestamp=1672649920


补充详细日志如下:

[2023-01-02]

[16:56:19.615][3432][HINT]:微信access_token【计时器】开始工作...2023-01-02 16:56:19

[16:56:19.615][3432][HINT]:微信API服务器域名api.weixin.qq.com的IP地址的解析【计时器】开始工作...2023-01-02 16:56:19

[16:56:59.863][180][HINT]:未过期时的Faccess_token--- 64_in-fCt47Y1_dB2UGw2XWMJOkcu6HSUt2m95TrlAdc4ujpa1x3Z9Pj0Knmwgt6gX-6LOVVPycP9Z5lQYDum8IH1DKbFsjIpk1vfklRdDZrj3-oZa9LNtr5HYs0XsLPFdADAYCS

[16:57:08.713][3232][HINT]:未过期时的Faccess_token--- 64_in-fCt47Y1_dB2UGw2XWMJOkcu6HSUt2m95TrlAdc4ujpa1x3Z9Pj0Knmwgt6gX-6LOVVPycP9Z5lQYDum8IH1DKbFsjIpk1vfklRdDZrj3-oZa9LNtr5HYs0XsLPFdADAYCS

[16:58:40.789][4576][HINT]:捕获日常微信服务器推送的消息Request.ContentFields.Text拿到客户openid等及其发送的xml消息,需要下面做解析等等处理......

[16:58:40.789][4576][HINT]:Xml和非XML的消息---:

    <Encrypt><![CDATA[Kn4jMkBu1cGBLv2LZ7H EDNbA160NaLjLA7PMXvlxotkHMmbzTBFgoOFcJLPw1hEE4UwBXo6Ks52zAaQ47JBQ7LhiinKKb5Ik 5O9eeQSTQCXZ1m76 f6sygGt vHjUtf /RsHF9n7FGvpKm9uORYKeyhk/I4N6Yoc1fk ac76wL9dIFXEEaLRY7LzF7P5mK71BZ0zeKTHZ19v3Hd5 DqEITe2sDqU Be2wQ/DWamyOWtosN60FKcWKr4ztJm rerLih7yup0BapW/N9SwO7yd/UUPDinqHEZHOh0BZkdY6S/M7OaDGq26 z4XvdsV0JrqhD3dolPaJtLCJmYcxz96cxAJD9EtqrCrCg9pN6dvJolaEOi/nrKLVHwi1LwJUo2Gmfl/kHfBBBnCmzCV5qPP3ff2GCaxi5mnD0ct7RHVICp3deDCHt TDL91m9O XtrHxP0/X2BD8zcHZTeZIahw==]]></Encrypt>

    <ToUserName><![CDATA[gh_ef269fGW0870]]></ToUserName>

</xml>

<xml>

encrypt_type=aes

msg_signature=efce89b1df14ab776f65814e598f00f9f8224a13

nonce=359888066

openid=oliZuuF1RFZ-5JS0lI87KjJEBclQ

signature=675b9558765630124fcc9acec404156a96624ee0

timestamp=1672649920


[16:58:40.789][4576][HINT]:

Request.RawHeaders字段的所有键值对---: 

Pragma:no-cache

Content-Length:578

Content-Type:text/xml

Accept:*/*

Host:www.cpuofbs.com

User-Agent:Mozilla/4.0

解密流信息:

InputStream.Size能被明文块128bit整除但不能被16整除---: 343

需要解密的原始字符串aEncodingAESKeyBts的DecodeBase64字节数组长度---: 32

SizeOf(TAESBuffer)=16---: 16


解密后内存流的字节数组的长度Length(P^)---: 32768

解密后内存流的字节数---: 336

iLen1---: 2082045282

iDecodeDataLen---: 32768

改原始大端网络序位小端主机序---数据验证---: 2082045282


四、截图

下载C#演示demo的用其自带的参数能编译运行通过:

但改为我接收到的参数及配置参数,就连签名都通不过了:


五、联系方式:13086652206; QQ: 584798030


跪求,感谢!

最后一次编辑于  2023-02-17
回答关注问题邀请回答
收藏

1 个回答

  • 罗晖
    罗晖
    2023-09-27

    遇到一样的问题,怎么解决的?在验签的时候 不加入加密后消息吗?

    2023-09-27
    有用
    回复
登录 后发表内容