用户数据的签名验证和加解密数据签名校验(组图)

2021-07-23
来源:网络整理

用户数据的签名验证以及加密和解密数据的签名验证

为了确保开放接口返回的用户数据的安全性,微信将对明文数据进行签名。开发人员可以根据业务需要对数据包进行签名验证小程序接口安全框架开发,以确保数据完整性。

如果签名验证算法涉及用户,请通过登录过程获取用户,并与应用程序自身的登录状态保持对应关系。当通过调用接口(例如wx。)获得数据时,该接口将同时返回,其中= sha1(+)开发人员将其发送到开发人员服务器进行验证。服务器使用用户的相应算法来计算签名,并与之进行比较以验证数据的完整性。

数据验证,例如wx。

接口返回的内容:

{ "nickName": "Band", "gender": 1, "language": "zh_CN", "city": "Guangzhou", "province": "Guangdong", "country": "CN", "avatarUrl": "http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0" }

用户的-key:

HyVFkGl5F5OQWJZZaNzBBg==

因此,用于签名的字符串是:

{"nickName":"Band","gender":1,"language":"zh_CN","city":"Guangzhou","province":"Guangdong","country":"CN","avatarUrl":"http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0"}HyVFkGl5F5OQWJZZaNzBBg==

使用sha1获得的结果是

75e81ceda165f4ffa64f4068af58c64b8f54b88c

加密数据解密算法

如果接口包含敏感数据(例如wx和inx),则接口的纯文本内容将不包含这些敏感数据。如果开发人员需要获取敏感数据,则需要对称解密接口返回的加密数据()。解密算法如下:

用于对称解密的算法是AES-128-CBC,并且数据填充有PKCS#7。对称解密的目标密文为(),对称解密密钥=(),它是16字节对称解密算法的初始向量iv,它将在数据接口中返回。

微信正式提供多种编程语言的示例代码(点击下载)。每种语言类型的接口名称都相同。调用方法可以参考示例。

此外,为了使应用程序验证数据的有效性,我们将在敏感数据上添加数据水印()

参数说明:

参数类型说明

数据水印

归因于敏感数据,开发人员可以验证此参数是否与他们自己一致

开发人员可以使用敏感数据获取的时间戳进行数据及时性验证

与wx界面相同。敏感数据:

{ "openId": "OPENID", "nickName": "NICKNAME", "gender": GENDER, "city": "CITY", "province": "PROVINCE", "country": "COUNTRY", "avatarUrl": "AVATARURL", "unionId": "UNIONID", "watermark": { "appid":"APPID", "timestamp":TIMESTAMP } }

注意:先前提供的加密数据()和相应的加密算法将被放弃。要求开发人员不再依赖旧的逻辑。

分享