一、微信服务号的消息加解密问题:
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
跪求,感谢!
遇到一样的问题,怎么解决的?在验签的时候 不加入加密后消息吗?