在本文 微信小程序用户数据的签名校验和加解密 之前需要先看看

微信小程序-获取用户session_key,openid,unionid - 后端为nodejs

代码封装是在上文添加的。

小程序代码:

1、在utils下的wechat.js文件里添加代码

  /*** 获取微信加密的数据,传递给后端*/static getCryptoData2() {let code = "";return this.login().then(data => {code = data.code;console.log("login接口获取的code:", code);return this.getUserInfo();}).then(data => {console.log("getUserInfo接口", data);let { encryptedData, iv, rawData, signature } = data;let obj = {js_code: code,rawData,signature,encryptedData,iv};return Promise.resolve(obj);}).catch(e => {console.log(e);return Promise.reject(e);})};/*** 从后端获取解密后的数据* @param {object} params */static getMyData(params) {let url = 'https://xx.xxxxxx.cn/api/cryptdata';return this.request(url, params, "POST", "application/x-www-form-urlencoded");};

2、app.js修改

let wechat = require('./utils/wechat.js');
App({onLaunch() {this.getUserInfo();},getUserInfo() {wechat.getCryptoData2().then(d => {return wechat.getMyData(d);}).then(d => {console.log("从后端获取解密的数据", d.data);}).catch(e => {console.log(e);})}
})

后端 nodejs代码
解密实例代码在官网有:有python,nodejs,PHP,C++版本, 下载地址

1、解压后把nodejs里的WXBizDataCrypt.js文件放到common文件夹下;

2、新增一个路由,router,需要用到sha1模块

router.post("/cryptdata", async (req, res) => {let WXBizDataCrypt = require('../common/WXBizDataCrypt')const sha1 = require("sha1");try {let appId = "wx70XXXXXXXed01b";let secret = "5ec6e1cXXXXXXXXXbf161a79dd4";let { encryptedData, iv, js_code, rawData, signature } = req.body;// 获取session_keylet opts = {url: `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${secret}&js_code=${js_code}&grant_type=authorization_code`}let r1 = await Ut.promiseReq(opts);let { session_key } = JSON.parse(r1);if (!session_key) return res.json('');// 数据签名校验let signature2 = sha1(rawData + session_key);if (signature != signature2) return res.json("数据签名校验失败");// 解密let pc = new WXBizDataCrypt(appId, session_key)let data = pc.decryptData(encryptedData, iv)console.log('解密后 data: ', data)res.json(data);}catch (e) {console.log(e);res.json('');}
})

结果:

可以看出和上文很像,其实这2步一般都是一起做的,如果不需要数据校验,上文

就可以,需要数据校验就要用到本文的代码了。

参考地址:

https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html

意外金喜的博客:http://blog.csdn.net/zzwwjjdj1

微信小程序用户数据的签名校验和加解密 - 后端nodejs相关推荐

  1. 微信java 签名验证_JAVA版微信小程序用户数据的签名验证和加解密

    签名验证和加解密 数据签名校验 为了确保 开放接口 返回用户数据的安全性,微信会对明文数据进行签名.开发者可以根据业务需要对数据包进行签名校验,确保数据的完整性. 签名校验算法涉及用户的session ...

  2. 微信小程序用户数据解密

    概述 通过微信web开发者工具创建登录,获取用户信息,发送至后台,进行用户数据解密 详细 代码下载:http://www.demodashi.com/demo/10705.html 一.准备工作 1. ...

  3. 微信小程序数据拼接_微信小程序用户数据解密算法Java版

    打开官方文档,开心~ 腾讯爸爸竟然给提供了解密算法 然而我下载解压后人傻了 可能鹅厂没养Java程序猿吧 那就看这C++改造吧 public class AnthCodeVerify { privat ...

  4. vue和小程序哪个好学一点_litemall,Spring Boot后端,微信小程序用户前端 + Vue用户移动端...

    litemall 又一个小商场系统. litemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端 + Vue用户移动端 注意: 由于第一次加载数据量较大,建议wif ...

  5. webform窗体怎么实现session唯一标识_微信小程序用户登录和登录态维护的实现_javascript技巧...

    这篇文章主要介绍了微信小程序用户登录和登录态维护的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 让用户登录,标识用户和获取 ...

  6. 获取小程序用户信息+java_java获取微信小程序用户信息

    第一步:获取openid.session_key等信息. /** * 获取微信小程序的用户openid和session_key/unionid * 返回格式:{"session_key&qu ...

  7. 小程序素材抓取软件_如何抓取微信小程序的数据?

    2017年1月份备受关注的微信小程序功能正式上线了,好多知名平台纷纷推出了自己的微信小程序,例如大众点评.美团外卖.京东购物.对于我们爬虫开发者来说这绝对是好事情,意味着又多了一个数据来源,又多了一种 ...

  8. 微信小程序用户信息解

    微信小程序用户信息解密 问题描述 当小程序在获取用户信息或者获取手机号的时候,用户微信接口返回的是AES加密之后的数据,所以需要解决 方法 就拿获取手机号来讲,前端通过微信接口: Page({getP ...

  9. 微信小程序用户登录信息过期处理

    微信小程序用户登录信息过期处理 由于小程序对获取用户信息的新规定,获取用户信息必须通过一个button调出获取窗口,然而用户的token会过期,而本地存在的缓存可能会让用户误以为自己仍处于登录状态,但 ...

最新文章

  1. jmeter内存溢出处理方式记录
  2. 20175316 盛茂淞 实验一 Java开发环境的熟悉
  3. 绝了!一个妹子 rm -rf 把公司整个数据库删没了
  4. 32个最热CPLD-FPGA论坛
  5. Centos7常用命令[挂载文件系统]
  6. Qt工作笔记-正则表达式QProcess::startDetached中正则表达式的使用
  7. java 的 provider_Java里的Provider是什么?
  8. 串口通信工具android,Android串口通信工具
  9. A Story of One Country (Hard) CodeForces - 1181E2 (分治)
  10. matlab中各种线型-颜色-标记点
  11. 什么事件必须要我王二狗来处理?
  12. 【博学谷学习记录】超强总结,用心分享 | shell基础
  13. 2017年最新基于hexo搭建个人免费博客——从零开始
  14. 三大视角,聊聊我眼中的广告系统
  15. 数据中心交换机基础自学系列 | MAC简介
  16. 问题解决:inittramfs unpacking failed:Decoding failed
  17. signature=501807407682dd47ffe7345fc7b18d2e,Signature-Free Intrusion Detection
  18. STM8L 读写EEPROM(24LC64)
  19. android音乐播放器开发 SweetMusicPlayer 载入歌曲列表
  20. 浅析技能音效制作思路

热门文章

  1. SIwave仿真手册——信号完整性仿真之背钻、模型添加、HFSS求解区域的划分(三)
  2. 详解:多模态知识图谱种类及其应用
  3. mysql 中文正则_MySQL
  4. 计算机操作系统原理第二章习题
  5. 2.2 黑群晖驱动安装:Synology Photos人脸识别
  6. K210快速上手教程(色块、人脸、声源识别等)
  7. EMC揭示中国大数据应用趋势
  8. 坚定看好核电设备产业
  9. 怎么把爱奇艺的qsv格式转换成mp4?教你快速转换爱奇艺格式
  10. 手把手教你微擎小程序模块安装配置教程