微信小程序加密網絡通道功能是小程序安全能力之一,目的是為了避免小程序與開發者后臺通信時數據被截取和篡改,微信側維護了一個用戶維度的可靠key,用于小程序和后臺通信時進行加密和簽名。
微信小程序開發者可以分別通過小程序前端和微信后臺提供的接口,獲取用戶的加密key。
溫馨提示:該安全能力從基礎庫2.17.3開始支持。
微信小程序加密網絡通道使用方法:
1、前端通過 userCryptoManager.getLatestUserKey 獲取加密密鑰信息
2、發起 wx.request 請求時使用第一步得到的加密密鑰信息對參數進行加密
3、服務端請求服務端接口getUserEncryptKey 拿到 encryptKey 用于解密
示例代碼:
// 前端
const somedata = ‘xxxxx’
const userCryptoManager = wx.getUserCryptoManager()
userCryptoManager.getLatestUserKey({
success({encryptKey, iv, version, expireTime}) {
const encryptedData =
someAESEncryptMethod(encryptKey, iv, somedata)
wx.request({
data: encryptedData,
success(res) {
const decryptedData =
someAESDEcryptMethod(
encryptKey,
iv,
res.data
)
console.log(decryptedData)
;
}
})
;
}
})
// 服務端
curl -X POST ”
https://api.weixin.qq.com
/wxa/business/getuserencryptkey?
access_token=ACCESS_TOKEN
&openid=OPENID
&signature=SIGNATURE
&sig_method=hmac_sha256″