C#微信公众号开发系列教程三(消息体签名及加解密)
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:48
http://www.cnblogs.com/zskbll/p/4139039.html
距离上一篇博文已经半个月了,本来打算每两天更新一次的,但可怜苦逼码农无日无夜的加班。第一篇博文发表后,博文视点的编辑就找到我,问我想不想出版这个系列,我当时瞬间就想到了王大锤的独白,想想真的是有点小激动,后面按照那边的要求,提交了申请书,也提交了目录,可惜文笔不行,再加上最近太忙,样稿一直没有给他,感觉挺愧疚了。真心希望能帮一下迷茫的新手开发者,希望各位在看博文的时候能给小弟一些建议或意见,让这个系列能更完美的面向大家。
前几篇主要是微信开发的准备工作,也没有什么技术含量。在第一篇和第二篇中,我主要讲的是使用花生壳来配合vs进行代码调试,也一度被园友吐槽本人是花生壳请来的逗比,没办法,为了和花生壳划清界限,在本篇进入正文前,为大家介绍一个比花生壳更好用的工具ngrok(群里的朋友介绍的,我现在冒充下逗比介绍给大家。),ngrok的好处我就不在此具体说明了,毕竟不是本文的重点,我录了视频,有兴趣的可以下载看下。链接:http://pan.baidu.com/s/1eQ8akQQ 密码: ov6l
出于安全考虑,微信公众平台在10月份的时候加入了消息体的加解密功能,首先,需要先验证签名,用于公众平台和公众账号验证消息体的正确性,其次,针对推送给公众号的普通消息和事件消息,以及推送给设备公众账号的设备进行加密,最后,公众号对密文消息的回复也需要加密。启用加解密功能后,公众平台服务器在向公众号服务器配置地址推送消息时,url将新增加两个参数,一个是加密类型一个是消息体签名,并以此来体现新功能。加密算法采用AES。关于明文模式,兼容模式,安全模式的说明,大家请参考官方文档.
验证消息真实性和加解密的帮助类官方提供的有demo,再次不详细讲述了,下载下来可以直接调用,下面请看代码:
在处理程序中,首先获取到公众平台服务器发送过来的数据,并转成字符串。代码如下
然后再分别获取url中的参数:timestamp,nonce,msg_signature,encrypt_type。可以看到,在明文模式下是没有encrypt_type参数的。如图:

明文模式

兼容模式和安全模式
兼容模式和安全模式则加入了消息体的签名与加密类型两个参数。
由于在实际的运营中,兼容模式不太可能使用,所以在此不做详细介绍了。
接着上面的讲。获取到url中的参数后,判断encrypt_type的值是否为aes,如果是则说明是使用的兼容模式或安全模式,此时则需调用解密相关的方法进行解密。
否则则直接解析接收到的xml字符串。
下图是接收到的密文:

解密之后的内容如下:

此时就可以解析此xml了。
当需要回复加密的请求时,回复的内容也是需要加密的,所以在回复前需要判断此条接收到的消息是否加密,如果是加密的,则需要将需要回复的内容加密后,再进行回复。回复消息的方法将在下一篇中具体讲解,此篇只讲解加密的过程。
处理代码如下:
将接收到的消息实体和需要回复的内容xml传递过来,如果是加密的,则加密后再Response,否则直接Response。
时间仓促,如有不明白的,请留言,如果你觉得本篇博文对你有帮助,请点击一下推荐,推荐给更多的朋友的。
各位有建议或者意见可留言给我哦,或者加如QQ群一起进行交流。
如果你是土豪,可以扫描下面的二维码悬赏一下,你的支持是笔者继续更新下去的动力。

- 上一篇: C#消息机制0XF012
- 下一篇: C#微信公众号开发系列教程二(新手接入指南)
相关文章
-
C#消息机制0XF012
C#消息机制0XF012
- 互联网
- 2026年04月04日
-
c#隐藏tabcontrol的 按钮
c#隐藏tabcontrol的 按钮
- 互联网
- 2026年04月04日
-
c#用反射获取wpf窗体控件
c#用反射获取wpf窗体控件
- 互联网
- 2026年04月04日
-
C#微信公众号开发系列教程二(新手接入指南)
C#微信公众号开发系列教程二(新手接入指南)
- 互联网
- 2026年04月04日
-
c#通过进程ID获取句柄
c#通过进程ID获取句柄
- 互联网
- 2026年04月04日
-
C#特性:从自定义一个特性开始,谈谈什么是特性
C#特性:从自定义一个特性开始,谈谈什么是特性
- 互联网
- 2026年04月04日






