敏感数据处理
收藏我的收藏
名词定义
敏感数据
session_key
校验数据合法性
请求到敏感数据时,返回的
signature
字段是在小程序服务器端通过如下算法得到:signature = sha1(`${rawData}${session_key}`)
开发者可以在自己的服务器端执行同样的算法,来校验数据是否合法。
解密敏感数据
- 1.对称解密使用的算法为
AES-128-CBC
,数据采用 PKCS#7
填充。- 2.对称解密的目标密文为
encryptedData
,即敏感数据。- 3.对称解密秘钥
aeskey = Base64_Decode(session_key)
, aeskey
长度为 16Byte。- 4.对称解密算法初始向量为
Base64_Decode(iv)
。解密敏感数据代码示例
Node.js
Go
Python
Java
const crypto = require("crypto"); function decrypt(encryptedData, sessionKey, iv) { const decipher = crypto.createDecipheriv( "aes-128-cbc", Buffer.from(sessionKey, "base64"), Buffer.from(iv, "base64") ); let ret = decipher.update(encryptedData, "base64"); ret += decipher.final(); return ret; }
Bug&Tip
- •Java 不支持 PKCS7Padding,只支持 PKCS5Padding,虽然名字不同,但是算法相同。