前不久,微信的企业号使用了强制的消息加密方式,随后公众号也加入了可选的消息加密选项。目前企业号和公众号的加密方式是一致的(格式会有少许差别)。

加密设置

进入公众号后台的“开发者中心”,我们可以看到Url对接的设置:

点击【修改设置】,可以进入到修改页面:

加密的方式一共有3种:

明文模式,即原始的消息格式

兼容模式,明文、密文将共存,正式发布的产品不建议使用(因为仍然包含了明文,达不到加密的效果)

安全模式,这种模式下消息将会被加密,开发者的服务器可以通过官方给出的算法进行解密,得到明文模式下的消息原文。

凡是加密的消息,返回的信息也需要经过加密。

处理加密信息

Senparc.Weixin.MP已经对三类消息作了自动判断,开发的过程中无需关注任何解密和加密的过程,仍然保持“明文模式”下的开发过程即可。

对应的MessageHandler中,我们可以通过一些参数得知目前的加密状态:

messageHandler.UsingEcryptMessage:是否使用了加密信息(包括兼容模式和安全模式)

messageHandler.UsingCompatibilityModelEcryptMessage:是否使用了兼容模式加密信息

通过上面2个属性的组合,我们便可以知道目前账号使用的是哪种加密模式(当然,大多数情况下开发者已经无需关心)。

为了可以更好地跟踪信息,MessageHandler新加入了FinalResponseDocument这个属性:

messageHandler.ResponseDocument:明文结构的响应数据XML对象

messageHandler.FinalResponseDocument:最终会返回给服务器的XML对象,在不加密的情况下将和ResponseDocument一致,否则会自动进行加密

加密原理

有关加密的算法(包括几种语言的示例下载)在官方的帮助文档里面可以找到:http://mp.weixin.qq.com/wiki/index.php?title=%E6%8A%80%E6%9C%AF%E6%96%B9%E6%A1%88

这里要说明一下的是EncodingAESKey,官方的解释有点绕。实际上EncodingAESKey是对AESKey的一次Base64编码处理,而AESKey是一个长度为32的随机字符串(从a-z,A-Z,0-9中选取)。由于32个字符的Base64编码长度为固定的44(最后一个字符为=),所以去掉=之后,就生成了最终的43个字符长度的EncodingAESKey。EncodingAESKey在消息加密和解密的过程中都会用到,需要进行严格的保密。

下面是一段C#生成EncodingAESKey的代码:protected string CreateEncodingAESKey()

{

string aesKey = GetRadomStr(32);//获得a-z,A-Z,0-9的随机字符串

var encodingAesKey = Convert.ToBase64String(Encoding.UTF8.GetBytes(aesKey), Base64FormattingOptions.None);

return encodingAesKey.Substring(0, encodingAesKey.Length - 1);

}

更多微信公众平台开发:消息加密相关文章请关注PHP中文网!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php7.2微信明文加密,微信公众平台开发:消息加密相关推荐

  1. 微信公众 mysql回复图片_微信公众平台开发消息回复总结介绍

    一.简介 微信公众平台提供了三种消息回复的格式,即文本回复.音乐回复和图文回复,在这一篇文章中,我们将对这三种消息回复的格式做一下简单讲解,然后封装成函数,以供读者使用. 二.思路分析 对于每一个PO ...

  2. 微信公众平台开发-消息管理-发送模板消息

    一.模板说明 模板消息是在特定服务场景中向粉丝发送的消息,例如:信用卡刷卡通知,商品购买成功通知.不同的模板有不同的风格,某些字段可以由你来填充自己的内容(同时设定颜色),从而形成自己的消息.微信公众 ...

  3. 微信公众平台开发消息回复总结

     http://www.cnblogs.com/mchina/p/3364377.html   转载地址 微信公众平台开发(十) 消息回复总结 一.简介 微信公众平台提供了三种消息回复的格式,即文 ...

  4. 微信公众平台回复多条消息php,PHP微信公众平台开发 - 消息回复的封装_PHP教程...

    [PHP微信公众平台开发系列] 01.配置微信接口 02.公众平台示例代码分析 03.订阅事件(subscribe)处理 04.简单回复功能开发 05.天气预报功能开发 06.翻译功能开发 07.聊天 ...

  5. 微信公众平台开发-消息管理-发送客服消息

    一.简介 当用户主动发消息给公众号的时候(包括发送信息.点击自定义菜单.订阅事件.扫描二维码事件.支付成功事件.用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为48小时)可以 ...

  6. ASP.NET MVC5+EF6+EasyUI 后台管理系统(73)-微信公众平台开发-消息管理

    前言 回顾上一节,我们熟悉的了解了消息的请求和响应,这一节我们来建立数据库的表,表的设计蛮复杂 你也可以按自己所分析的情形结构来建表 必须非常熟悉表的结果才能运用这张表,这表表的情形涵盖比较多 思维导 ...

  7. 天气预报文字版微信_微信公众平台开发(4)天气预报

    微信公众平台 微信公众平台开发 消息接口 微信天气预报 天气预报接口 中国天气网 一.数据接口 百度提供天气预报查询接口API,可以根据经纬度/城市名查询天气情况,我们可以在微信公众平台开发中调用这一 ...

  8. PHP7.0微信公众平台开发4: 实例一:接收普通消息和接收事件推送

    PHP7.0微信公众平台开发4: 实例一:接收普通消息和接收事件推送 1. API接口的声明 2. PHP脚本代码 3. 运行结果 由于消息类型有多钟,本文中,"接收普通消息"我以 ...

  9. 《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》——3.3 微信开发者中心...

    本节书摘来自华章计算机<微信公众平台开发:从零基础到ThinkPHP5高性能框架实践>一书中的第3章,第3.3节,作者 方倍工作室,更多章节内容可以访问云栖社区"华章计算机&qu ...

最新文章

  1. LeetCode实战:最长公共前缀
  2. Spring Security 中使用Keycloak作为认证授权服务器
  3. C#Array(数组) 一维、多维数组
  4. 8.5-7 mkfs、dumpe2fs、resize2fs
  5. ppt修复无法读取_移动硬盘故障分析以及建议修复方法
  6. [react] 你阅读了几遍React的源码?都有哪些收获?你是怎么阅读的?
  7. php flush nginx,Nginx+phpfastcgi下flush输出问题
  8. 捕获Wscript.Quit的退出码
  9. (4)css2.1选择器
  10. wps怎么画网络图_尼玛,WPS竟然悄悄搞了个免费的公文写作AI...【石说】
  11. Java EE重命名为Jakarta EE:Java EE Guardians与Oracle的分歧
  12. python语言高空坠球_高空坠物打击体验装置制造方法
  13. android 扫描ble设备,Android设备扫描后列出BLE设备
  14. cad(2000坐标系)转kml
  15. java 树结构_Java通用tree树形结构
  16. 最新的CC2642R与CC2640、CC2640R2F有什么改进?
  17. 如何将VSCode添加到鼠标右键菜单
  18. 【转载收藏】针对VNPY的软件bugs的修改总结
  19. 应用宝省流量更新sdk接入指南
  20. 单片机读写FT24C256A详解

热门文章

  1. 可以免费申请https证书的网址
  2. 百度地图实现 区域高亮
  3. Struts + hibernate +spring课堂笔记
  4. 浏览器Disk Cache磁盘缓存及其协商缓存、及原生App和浏览器实现缓存的差异
  5. linux如何获取root权限
  6. (调色软件)DaVinci Resolve 17 达芬奇新版调色系统软件
  7. JRXH静态信号继电器
  8. 安卓源码下apk进行platform签名的方法
  9. 华为鸿蒙5g售价,荣耀5G最新确认,120Hz+双6400万像素+鸿蒙系统,售价感人
  10. 人生该怎么才有意义?这么忙碌的活着到底是为了什么!