阿哥论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 167|回复: 0

消息体签名与加解密-开发者FAQ

[复制链接]

升级  30.33%

举人

Rank: 3Rank: 3

积分
291
 楼主| 发表于 2015-4-11 11:56:07 | 显示全部楼层 |阅读模式
消息体签名与加解密-开发者FAQ
消息加解密功能开发者FAQQ 为什么要上线消息加密功能?
A 为了更好的保护用户和公众账号的信息安全。

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

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

消息体签名与加解密-开发者FAQ
摘自:http://mp.weixin.qq.com/wiki/1/66bc8fb495f80faeacc65cfb8d931acd.html

您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表