专栏首页HLQ_Struggle好玩的接口 之 Java 解密微信小程序获取手机号
原创

好玩的接口 之 Java 解密微信小程序获取手机号

LZ-Says:有些东西,真的是很矛盾,本来很简单的事儿,各自坚持,结果,不欢而散,不舍?如何?

image.png

前言

最近搞接口,基于 Spring Boot,怎么说呢,很虐。

不过熟悉了业务,表结构等等,相对来说还是比较 nice,比较爽。

可惜,目前还是属于 最最最最 low 的小白白,希望点滴积累吧。

今天接到要实现一个解密微信小程序获取微信绑定的手机号接口,有点懵。

下面一起开始吧~

解密获取绑定微信手机号

官方地址:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html

划重点叻:

  • 大概执行的一个流程图:
    在这里插入图片描述
    重点了解: 签名校验以及数据加解密涉及用户的会话密钥 session_key。 开发者应该事先通过 wx.login 登录流程获取会话密钥 session_key 并保存在服务器。为了数据不被篡改,开发者不应该把 session_key 传到小程序客户端等服务器外的环境。
  • 关于会话密钥 session_key 有效性
    在这里插入图片描述
  • 小程序调用获取手机号码返回参数说明:
    在这里插入图片描述
    开搞、实现简单说下逻辑顺序:
  • 小程序通过调用获取手机号授权方式拿到返回的 iv 和 encryptedData;
  • 后台通过调用 login 接口拿到对应的 openID 以及 sessionKey;
  • 解密。

直接放代码了:

导包:

import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; // 这个包不限,LZ 正好项目有个支持解密顺手用了
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

解密关键代码:

Map<String, Object> weChatMap = 获取 SessionKey;
String sessionKey = weChatMap.get("sessionKey").toString();
// 开始解密
byte[] encData = Base64.decode(encryptedData);
byte[] iv = Base64.decode(ivStr);
byte[] key = Base64.decode(sessionKey);
AlgorithmParameterSpec ivSpec = new IvParameterSpec(iv);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
// 将解密结果 return
return new String(cipher.doFinal(encData), "UTF-8");

返回结果:

在这里插入图片描述

个人公众号

不定期发布博文,最近有点忙,感谢老铁理解,欢迎关注~

<center><img src=https://img-blog.csdn.net/20180902010528747></center>

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微信小程序+Java获取用户授权手机号码

    小程序内可以直接通过授权获取用户微信号绑定的手机号码或用户添加的其他手机号码,这样可以使得小程序在进行账户的身份可控上又提高了一步,那么应该如何来获取手机号码呢...

    乌龟哥哥
  • 小程序获取微信用户绑定的手机号

    小程序API内提供getPhoneNumber借口来获取用户已经绑定到微信的手机号,但需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用; ...

    李文杨
  • 几行代码获取微信绑定的手机号 小程序云开发

    之前也有过说过相关教程,但不够简单,现在采取官方云调用免鉴权,着实方便,非常简单。

    许坏
  • 微信小程序Java登录流程(ssm实现具体功能和加解密隐私信息问题解决方案)

    signature,//签名、encryptedData,//用户敏感信息、iv//解密算法的向量:

    好好学java
  • ​微信小程序如何获取用户手机号 ?

    1、小程序端调用 wx.login() 方法,获取 code 后,将 code 通过后台 api 接口传递到后台。

    热心的程序员
  • 微信小程序如何获取用户手机号 ?

    1、小程序端调用 wx.login() 方法,获取 code 后,将 code 通过后台 api 接口传递到后台。

    热心的程序员
  • 微信小程序获取手机号

    微信官方文档获取手机号流程地址,先看下最好方便理解下面步骤 实现思路,步骤如下 1.前端需先调用官方wx.login接口获取登录凭证code。 2.后端接...

    崔笑颜
  • TP框架集成微信小程序getPhoneNumber获取手机号功能

    沈唁
  • 想开发微信小游戏,先看看腾讯是如何制定规则的

    关键时刻,第一时间送达! ? 作者 | 凌华彬、王哲 责编 | 徐威龙 一、前言 在第一篇文章《微信小游戏开发上手》中,我们给大家介绍了上手微信小游戏开发所需要...

    企鹅号小编
  • 「小程序JAVA实战」微信小程序简介(一)

    2018年7月13日,小程序任务栏功能升级,新增“我的小程序”板块;而小程序原有的“星标”功能升级,可以将喜欢的小程序直接添加到“我的小程序”。

    IT架构圈
  • 解读小程序敏感数据获取方式以及解密机制

    话说,小程序内存在一种敏感数据的加解密机制,这个机制在不同开发接口/组件下有通用的解密方式,然而却具备不尽一样的交互机制,看不懂?没事,先接着往下看。 首先要明...

    花叔
  • 解密微信小程序Java登录流程(ssm实现具体功能)

    signature,//签名、encryptedData,//用户敏感信息、iv//解密算法的向量:

    好好学java
  • 这 10 种最酷玩法,创造了 2017 年所有爆款小程序

    到 2018 年 1 月 9 日,小程序就上线一周年了。为此,知晓程序推出小程序上线一周年系列文章。

    知晓君
  • 开发 | 一个 Android 开发者的小程序开发之旅

    我是一名 Android 开发程序员,以前没有接触过前端开发,直到接手了公司的小程序项目,才开始逐渐接触前端领域。

    知晓君
  • Fiddler抓包实战,这些小窍门你都会了吗?

    调试来自PC,Mac或Linux系统以及移动(iOS和Android)设备的流量。确保在客户端和服务器之间传输正确的cookie,标头和缓存指令。支持任何框架,...

    Bug开发工程师
  • 初学者学Java常遇到的问题,我都给你回答了!

    看到了这个问题,就想起了我在大学自学的时候有同样的问题,现在工作了,来写写自己的看法,希望对广大的初学者有所帮助。

    Java3y
  • 海量视频资源【网盘直接取】

    资源均来源于网络,在自学/开公众号的时候收集而来。如果侵权请联系我,会第一时间删除。

    Java3y
  • 【五一福利】Java程序员编程学习之路资源合集

    七月半夏
  • 小程序开发总结

    经历了一段繁忙的工作期,还有2天就要过年了。在这里总结一下最新开发微信小程序的心得和体会,算是一个总结,也算温故而知新,如果还能对读者有所帮助,那就更好了。 开...

    司想君

扫码关注云+社区

领取腾讯云代金券