消息体签名与加解密-开发者Q&A

移动开发 Android
开发者接入消息加解密功能并不复杂,微信团队提供了5种语言的示例代码(包括C++、php、Python、Java和C#),对于使用这个5种语言的开发者,只需根据《消息加解密接入指引》,参考示例代码,调用微信公众平台提供的函数即可;而对于其他语言的开发者,需根据《消息加解密详细技术方案》编写相关代码。

Q 为什么要上线消息加密功能?

A 为了更好的保护用户和公众账号的信息安全。

Q 接入消息加解密功能复杂吗?

A 开发者接入消息加解密功能并不复杂,微信团队提供了5种语言的示例代码(包括C++、php、Python、Java和C#),对于使用这个5种语言的开发者,只需根据《消息加解密接入指引》,参考示例代码,调用微信公众平台提供的函数即可;而对于其他语言的开发者,需根据《消息加解密详细技术方案》编写相关代码。

Q 消息加密功能将带来哪些重要变化?

A 有如下几个方面:

选择明文模式时,收发消息的方式和原先相同,但安全系数较低,微信团队推荐开发者在兼容模式下开发调试,并升级到安全模式;

选择兼容模式时,消息包同时包括明文和密文,消息包的长度会相应增加到原来的3倍左右,开发者需检查系统,做好预留,防止因消息变长而接收出错;

兼容模式和安全模式下,公众平台服务器向公众账号服务器配置地址URL推送消息时,将会增加两个参数;

安全模式下,内容为纯密文,请提前做好接收消息的解密工作和回复消息的加密工作。

Q 什么是EncodingAESKey?

A 微信公众平台采用AES对称加密算法对推送给公众帐号的消息体对行加密,EncodingAESKey则是加密所用的秘钥。公众帐号用此秘钥对收到的密文消息体进行解密,回复消息体也用此秘钥加密。

Q 开发者如何判断消息是否被加密?什么情况下需要对回包进行加密?

A 请开发者根据URL参数来判断:url上无encrypt_type参数或者其值为raw,表示消息体仅含有明文,公众账号回复明文。encrypt_type为aes则表示消息体含有密文,公众账号回复密文(兼容模式期间回复明文或密文均可)。

Q 公众账号开发者上线加解密版本后,还需要保留明文解包和回包逻辑吗?

A 暂时先保留之前的逻辑,根据参数判断,也做成兼容模式比较好。

Q 常见错误举例

A 常见错误原因如:

xml格式不对:如<TimeStamp>写成了<Timestamp > (s小写了且p和>中间有空格)

公众平台网站提供了修改EncodingAESKey的功能,公众账号需要保存当前的和上一次的EncodingAESKey,若当前的EncodingAESKey解密失败,则尝试用上一次的EncodingAESKey解密。回包时,用哪个Key解密成功,则用此Key加密对应的回包

调用DecryptMsg解密时,传入的是url上的msg_signature,而不是signature

Java要求jdk 1.6及1.6以上

异常java.security.InvalidKeyException:illegal Key Size的解决方案:在官方网站下载JCE无限制权限策略文件(请到官网下载对应的版本, 例如JDK7的下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html 下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt,如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件;如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件

Q 微信公众平台接口调试工具是否支持消息体加解密的在线调试?

A 点击http://mp.weixin.qq.com/debug

责任编辑:chenqingxiang
相关推荐

2015-02-11 15:23:13

微信SDK

2023-11-01 09:44:21

MySQLJava

2010-05-10 14:11:41

负载均衡算法

2015-02-11 14:45:16

微信SDK

2016-09-27 19:30:11

2010-05-25 17:57:24

VoIP网络电话

2011-01-24 15:46:30

金山网络T盘T盘

2016-07-11 15:22:50

华为开发者

2019-05-05 08:12:42

python数据科学语言

2012-06-13 01:23:30

开发者程序员

2010-04-01 16:18:55

无线上网卡流量

2010-03-16 10:45:37

家庭无线WLAN技术

2013-03-11 11:20:05

2017-03-31 20:16:53

华为开发者联盟

2018-01-16 08:54:06

开发者Angular聊天机器人

2020-03-11 10:26:51

开发者技能工具

2015-03-24 12:34:56

CeBIT 2015eSDK华为
点赞
收藏

51CTO技术栈公众号