溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信公眾平臺開發中如何實現消息加密

發布時間:2021-09-10 11:34:40 來源:億速云 閱讀:358 作者:小新 欄目:移動開發

這篇文章主要介紹微信公眾平臺開發中如何實現消息加密,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

加密設置

  進入公眾號后臺的“開發者中心”,我們可以看到Url對接的設置:

微信公眾平臺開發中如何實現消息加密

點擊【修改設置】,可以進入到修改頁面:

微信公眾平臺開發中如何實現消息加密

 加密的方式一共有3種:

明文模式,即原始的消息格式

兼容模式,明文、密文將共存,正式發布的產品不建議使用(因為仍然包含了明文,達不到加密的效果)

安全模式,這種模式下消息將會被加密,開發者的服務器可以通過官方給出的算法進行解密,得到明文模式下的消息原文。

  凡是加密的消息,返回的信息也需要經過加密。

處理加密信息

  Senparc.Weixin.MP已經對三類消息作了自動判斷,開發的過程中無需關注任何解密和加密的過程,仍然保持“明文模式”下的開發過程即可。

  對應的MessageHandler中,我們可以通過一些參數得知目前的加密狀態:

  messageHandler.UsingEcryptMessage:是否使用了加密信息(包括兼容模式和安全模式)

  messageHandler.UsingCompatibilityModelEcryptMessage:是否使用了兼容模式加密信息

 通過上面2個屬性的組合,我們便可以知道目前賬號使用的是哪種加密模式(當然,大多數情況下開發者已經無需關心)。

  為了可以更好地跟蹤信息,MessageHandler新加入了FinalResponseDocument這個屬性:

  messageHandler.ResponseDocument:明文結構的響應數據XML對象

  messageHandler.FinalResponseDocument:最終會返回給服務器的XML對象,在不加密的情況下將和ResponseDocument一致,否則會自動進行加密

加密原理

  有關加密的算法(包括幾種語言的示例下載)在官方的幫助文檔里面可以找到:http://mp.weixin.qq.com/wiki/index.php?title=%E6%8A%80%E6%9C%AF%E6%96%B9%E6%A1%88

  這里要說明一下的是EncodingAESKey,官方的解釋有點繞。實際上EncodingAESKey是對AESKey的一次Base64編碼處理,而AESKey是一個長度為32的隨機字符串(從a-z,A-Z,0-9中選?。?。由于32個字符的Base64編碼長度為固定的44(最后一個字符為=),所以去掉=之后,就生成了最終的43個字符長度的EncodingAESKey。EncodingAESKey在消息加密和解密的過程中都會用到,需要進行嚴格的保密。

  下面是一段C#生成EncodingAESKey的代碼:

protected string CreateEncodingAESKey()
        {
            string aesKey = GetRadomStr(32);//獲得a-z,A-Z,0-9的隨機字符串
            var encodingAesKey = Convert.ToBase64String(Encoding.UTF8.GetBytes(aesKey), Base64FormattingOptions.None);
            return encodingAesKey.Substring(0, encodingAesKey.Length - 1);
        }

以上是“微信公眾平臺開發中如何實現消息加密”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女