前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >好玩的接口 之 Java 解密微信小程序获取手机号

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

原创
作者头像
贺biubiu
修改2021-01-19 17:53:25
2.8K0
修改2021-01-19 17:53:25
举报
文章被收录于专栏:HLQ_StruggleHLQ_Struggle

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

image.png
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;
  • 解密。

直接放代码了:

导包:

代码语言:txt
复制
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;

解密关键代码:

代码语言:txt
复制
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>

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 解密获取绑定微信手机号
  • 个人公众号
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档