微信小程序加密網(wǎng)絡(luò)通道功能是小程序安全能力之一,目的是為了避免小程序與開發(fā)者后臺(tái)通信時(shí)數(shù)據(jù)被截取和篡改,微信側(cè)維護(hù)了一個(gè)用戶維度的可靠key,用于小程序和后臺(tái)通信時(shí)進(jìn)行加密和簽名。
微信小程序開發(fā)者可以分別通過(guò)小程序前端和微信后臺(tái)提供的接口,獲取用戶的加密key。
溫馨提示:該安全能力從基礎(chǔ)庫(kù)2.17.3開始支持。
微信小程序加密網(wǎng)絡(luò)通道使用方法:
1、前端通過(guò) userCryptoManager.getLatestUserKey 獲取加密密鑰信息
2、發(fā)起 wx.request 請(qǐng)求時(shí)使用第一步得到的加密密鑰信息對(duì)參數(shù)進(jìn)行加密
3、服務(wù)端請(qǐng)求服務(wù)端接口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)
;
}
})
;
}
})
// 服務(wù)端
curl -X POST ”
https://api.weixin.qq.com
/wxa/business/getuserencryptkey?
access_token=ACCESS_TOKEN
&openid=OPENID
&signature=SIGNATURE
&sig_method=hmac_sha256″

