訊息加解密說明
訊息加解密說明
公眾號訊息加解密是公眾平台為了進一步加強公眾號安全保障,提供的新機制。 開發者需注意,公眾帳號主動呼叫API的狀況將不受影響。只有被動回覆用戶的訊息時,才需要進行訊息加解密。 訊息加解密的具體修改包括:
1.新增消息体签名验证,用于公众平台和公众账号验证消息体的正确性 2.针对推送给微信公众账号的普通消息和事件消息,以及推送给设备公众账号的设备消息进行加密 3.公众账号对密文消息的回复也要求加密
請開發者查看接入指引和開發者FAQ來接入訊息體簽名及加解密功能:接入指引,開發者FAQ,若關注技術實現,可查看技術方案:技術方案
啟用加解密功能(即選擇相容模式或安全模式)後,公眾平台伺服器在向公用帳號伺服器設定位址(可在「開發者中心」修改)推播訊息時,URL將新增加兩個參數(加密類型和訊息體簽章),並以此體現新功能。加密演算法採用AES,具體的加解密流程和方案請看存取指引、技術方案和範例程式碼。
為了配合訊息加密功能的上線,並幫助開發者適應新特性,公眾平台提供了3種加解密的模式供開發者選擇,即明文模式、相容模式、安全模式(可在「開發者中心」選擇對應模式),選擇相容模式與安全模式前,需在開發者中心填寫訊息加解密金鑰EncodingAESKey。
明文模式:维持现有模式,没有适配加解密新特性,消息体明文收发,默认设置为明文模式 兼容模式:公众平台发送消息内容将同时包括明文和密文,消息包长度增加到原来的3倍左右;公众号回复明文或密文均可,不影响现有消息收发;开发者可在此模式下进行调试 安全模式(推荐):公众平台发送消息体的内容只含有密文,公众账号回复的消息体也为密文,建议开发者在调试成功后使用此模式收发消息
什麼是EncodingAESKey?
微信公眾平台採用AES對稱加密演算法對推送給公眾帳號的訊息本體對行加密,EncodingAESKey則是加密所使用的密碼金鑰。公眾帳號用此秘鑰將收到的密文訊息本體解密,回覆訊息本體也用此秘鑰加密。
此外,微信公眾平台為開發者提供了5種語言的範例程式碼(包括C 、php、Java、Python和C#版本,點擊下載)。