小程序 自定义前后端通信加密

为了避免小程序与开发者后台通信时数据被截取和篡改,微信侧维护了一个用户维度的可靠key,用于小程序和后台通信时进行加密和签名。
开发者可以分别通过小程序前端和微信后台提供的接口,获取用户的加密key。

1、自定义加密解密
	const somedata = 'xxxxx'
	const userCryptoManager = wx.getUserCryptoManager()
	userCryptoManager.getLatestUserKey({
	    success({encryptKey, iv, version, expireTime}) {
	        const encryptedData = 自定义加密(encryptKey, iv, somedata)
	        wx.request({
	           data: encryptedData,
	           success(res) {
	                const decryptedData = 自定义解密(encryptKey, iv, res.data)
	                console.log(decryptedData)
	           }
	        })
	    }
	})
	
	开源加密库: https://github.com/flash1293/aes-wasm https://github.com/ricmoo/aes-js
	
	获取密码学安全随机数:
		userCryptoManager.getRandomValues({
			length:n,	生成n个字节的随机数,字节数最大为1048576
		  	success: res => {
		    	console.log(wx.arrayBufferToBase64(res.randomValues)) 	转换为base64字符串后打印
		  	}
		})

2、服务端
	在开发者服务端,可以调用getUserEncryptKey后台接口获取用户最近三次的key。
	在获取key的同时,接口会携带version信息,开发者可以比较version版本来选择使用对应的key对数据进行加解密。
	
	curl -X POST "https://api.weixin.qq.com/wxa/business/getuserencryptkey?access_token=ACCESS_TOKEN&openid=OPENID&signature=SIGNATURE&sig_method=hmac_sha256"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值