文章作者:松阳
本文出自 阿修罗道,禁止用于商业用途,转载请注明出处。
消息体加密
随着微信服务开发在越来越多的领域应用,应用的安全性逐渐被重视起来。本文主要阐述如何为微信的消息加密的原理与Java版本的实现。
原理
做过微信开发的朋友们都知道,微信使用xml格式的消息结构。这里着重说一下最核心的收发消息。
在明文模式中,POST请求有signature, timestamp, nonce三个参数。它的Body为一个XML:
1348831860
1234567890123456
而在加密模式中,增加了两个参数:encrypt_type 和 msg_signature 。它的Body 也变更为:
其中encryptData是加密后的信息,通过我们在微信开发平台配置的EncodingAESKey, Token, 以及自动生成的AppID,通过加密算法,可以验证信息的真实性,并且将真实的信息,解析成如明文的格式的XML。整条信息是加密的,因此不用担心被伪造,否则,会有风险。
PS:会有怎样的风险?如果是Token被人猜出来进而伪造内容,加密模式中的EncodingAESKey不会么?还是担心消息类型会泄露?没太想明白,希望路过的大神指点
不管怎么说&