公眾平臺消息體簽名及加解密方案概述
公眾平臺消息體簽名及加解密方案概述
1.新增消息體簽名驗證,用于公眾平臺和公眾賬號驗證消息體的正確性
2.針對推送給微信公眾賬號的普通消息和事件消息,以及推送給設備公眾賬號的設備消息進行加密
3.公眾賬號對密文消息的回復也要求加密
開發者需注意,公眾賬號主動調用API的情況將不受影響。
啟用加解密功能(即選擇兼容模式或安全模式)后,公眾平臺服務器在向公眾賬號服務器配置地址(可在“開發者中心”修改)推送消息時,URL將新增加兩個參數(加密類型和消息體簽名),并以此來體現新功能。加密算法采用AES,具體的加解密流程和方案請看接入指引、技術方案和示例代碼。
為了配合消息加密功能的上線,并幫助開發者適配新特性,公眾平臺提供了3種加解密的模式供開發者選擇,即明文模式、兼容模式、安全模式(可在“開發者中心”選擇相應模式),選擇兼容模式和安全模式前,需在開發者中心填寫消息加解密密鑰EncodingAESKey。
明文模式:維持現有模式,沒有適配加解密新特性,消息體明文收發,默認設置為明文模式
兼容模式:公眾平臺發送消息內容將同時包括明文和密文,消息包長度增加到原來的3倍左右;公眾號回復明文或密文均可,不影響現有消息收發;開發者可在此模式下進行調試
安全模式(推薦):公眾平臺發送消息體的內容只含有密文,公眾賬號回復的消息體也為密文,建議開發者在調試成功后使用此模式收發消息
什么是EncodingAESKey?
微信公眾平臺采用AES對稱加密算法對推送給公眾帳號的消息體對行加密,EncodingAESKey則是加密所用的秘鑰。公眾帳號用此秘鑰對收到的密文消息體進行解密,回復消息體也用此秘鑰加密。
此外,微信公眾平臺為開發者提供了5種語言的示例代碼(包括C++、php、Java、Python和C#版本,../static/assets/a5a22f38cb60228cb32ab61d9e4c414b.zip )。 請開發者查看接入指引和開發者FAQ來接入消息體簽名及加解密功能,若關注技術實現,可查看技術方案。