【微信小程序】使用 Cryptojs 解密微信绑定手机号码

这篇具有很好参考价值的文章主要介绍了【微信小程序】使用 Cryptojs 解密微信绑定手机号码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

     很抱歉断更了一段时间,因为最近在做一个项目比较忙,正好项目中小程序板块需要解密手机号码来提交给接口,小程序中虽然提供了获取手机号按钮点击事件:bindgetphonenumber,但是该事件的处理函数中只能获取到加密过的手机号码,网上大部分教程都是使用 java,php,c# 等来实现的,这篇文章就教会大家如何用 JS 来解密手机号,干货满满,记得先收藏哦!

【微信小程序】使用 Cryptojs 解密微信绑定手机号码


第一步:

首先我们要在页面中定义一个按钮去点击调用获取手机号的事件,此处 open-type 作用为弹出弹窗来允许获取手机号,bindgetphonenumber 的作用为点击后执行 getphone 这个回调

<button open-type="getPhoneNumber" bindgetphonenumber="getphone">获取手机号码</button>

第二步: 

接下来我们看点击获取后执行的回调 getphone ,直接输出 getphone 的事件对象 e,我们就可以得到两个非常有用的数据:encryptedData iv,encryptedData 的内容就是我们加密过的手机号码,此处先对这两个数据进行保存

getphone(e){
   console.log(e)
    let  encryptedData=e.detail.encryptedData  //保存事件对象中的这两个数据
    let  iv=e.detail.iv
}

【微信小程序】使用 Cryptojs 解密微信绑定手机号码


第三步:

接下来就是对加密数据进行解密的环节了,解密数据需要用到 session_key,但是这个东西我们需要调用请求来获取,请求的参数为以下三个数据:

参数需要以下三个数据,我们先对其一一获取到:

  • 小程序的appid:这个可以去小程序公众平台开发设置里获取
  • 小程序的appsecret:这个同样也在小程序公众开发平台中
  •  code值:这个数据我们需要调用 wx.login 来获取,然后将获取到的code存入data中,切记获取code一定要在解密之前
    wx.login({
           success: (res) => {
              that.setData({
                 code:res.code
              })
    
           },
         })

第四步: 

获取到这三个参数数据后就可以去请求 session_key 了,具体代码如下:注意代码中 url 里模板字符串中添加的数据为你上一步获取的三个数据,我们在请求的成功回调 success 中输出一下回调信息res,可以看到我们就得到了 session_key

wx.request({
      url: `https://api.weixin.qq.com/sns/jscode2session?appid=${this.data.appid}&secret=${this.data.secret}&js_code=${this.data.code}&grant_type=authorization_code`,
      method: 'POST',
      header: {
       'content-type': 'application/json'
      },
      success: function (res) {
          console.log(res.data.session_key);
      }
    })

【微信小程序】使用 Cryptojs 解密微信绑定手机号码


第五步:

最后一步就很简单了:我们要借助一个JS库来对加密信息进行解密 -------- Cryptojs,需要这个库的小伙伴私聊我我单发给你


第一步:把这个Cryptojs文件拖到小程序目录的 utils 下:

【微信小程序】使用 Cryptojs 解密微信绑定手机号码

第二步:在 utils 下新建 js文件 ----- RdWXBizDataCrypt.js,注意要和cryptojs文件同层级

【微信小程序】使用 Cryptojs 解密微信绑定手机号码

第三步:复制以下代码到 RdWXBizDataCrypt.js 中,注意第一行的引入路径是否正确!

var Crypto = require('./cryptojs-master/cryptojs.js').Crypto;
var app = getApp();

function RdWXBizDataCrypt(appId, sessionKey) {
  this.appId = appId
  this.sessionKey = sessionKey
}

RdWXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {
  // base64 decode :使用 CryptoJS 中 Crypto.util.base64ToBytes()进行 base64解码
  var encryptedData = Crypto.util.base64ToBytes(encryptedData)
  var key = Crypto.util.base64ToBytes(this.sessionKey);
  var iv = Crypto.util.base64ToBytes(iv);

  // 对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充
  var mode = new Crypto.mode.CBC(Crypto.pad.pkcs7);
  
  try {
    // 解密
    var bytes = Crypto.AES.decrypt(encryptedData, key, {
        asBpytes:true,
        iv: iv,
        mode: mode
    });
    
    var decryptResult = JSON.parse(bytes);
    
  } catch (err) {
    console.log(err)
  }


  return decryptResult
}

module.exports = RdWXBizDataCrypt

 第四步:在需要用到解密的页面js文件中引入 WXBizDataCrypt(别管这是啥,需要在哪解密手机号就把这个引入到哪个页面),我要在 getphone 这个事件回调里解密,所以在写getphone 的这个页面的引入,同样注意路径是否正确

var WXBizDataCrypt = require('../../utils/RdWXBizDataCrypt')

第五步:按照以下代码解密,参数为前面获取掉的 session_key,与加密过的手机号密文 encryptedData,以及前面获取到的 iv

 var pc = new WXBizDataCrypt(that.data.appid, session_key)
        var data = pc.decryptData(encryptedData , iv)
        console.log(data);

输出 data 得到的数据里面就可以拿到我们解密的手机号码了

【微信小程序】使用 Cryptojs 解密微信绑定手机号码文章来源地址https://www.toymoban.com/news/detail-492226.html


完整的代码:仅供参考

var WXBizDataCrypt = require('../../utils/RdWXBizDataCrypt')
getphone(e){
    let that=this
    let  encryptedData=e.detail.encryptedData
    let  iv=e.detail.iv
    //获取 session_key
    wx.request({
      url: `https://api.weixin.qq.com/sns/jscode2session?appid=${this.data.appid}&secret=${this.data.secret}&js_code=${this.data.code}&grant_type=authorization_code`,
      method: 'POST',
      header: {
       'content-type': 'application/json'
      },
      success: function (res) {
        let session_key=res.data.session_key;
        console.log(res);
        var pc = new WXBizDataCrypt(that.data.appid, session_key)
        var data = pc.decryptData(encryptedData , iv)
        console.log(data);
      }
    })
  },

到了这里,关于【微信小程序】使用 Cryptojs 解密微信绑定手机号码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序-授权登录(手机号码)

    template     view class=\\\"work-container\\\"         view class=\\\"login\\\"             view class=\\\"content\\\"                 button class=\\\"button_wx\\\" open-type=\\\"getPhoneNumber\\\" @getphonenumber=\\\"getPhoneNumber\\\"                     u-icon name=\\\"weixin-fill\\\" color=\\\"#FFFFFF\\\" size=\\\"50\\\"/u-icon                     

    2024年02月06日
    浏览(52)
  • 微信小程序登录及获取手机号码

    前端:微信先授权登录后再授权获取手机号码 后端:先微信登录获取openid返回前端,前端再传递手机号码code给后端获取手机号码并在本地数据量注册用户信息,需提供2个接口 第一步:先通过code微信授权登录获取openid 第二步:根据app_id和app_secret获取access_token 第三步:根据

    2024年02月12日
    浏览(65)
  • 微信小程序如何获取用户手机号码?

    需求 在开发一款微信小程序时,通常需要用户进行微信登录,并获取用户的手机号码作为用户的唯一标识(userId)。虽然可以通过wx.login来获取用户的openid,但有时候需要获取用户的手机号码以提供更完善的个性化服务,因此探索获取用户手机号码的方式成为开发中的一个重

    2024年04月22日
    浏览(49)
  • 微信小程序登录+获取手机号码(前端+后端)

    上面这张是微信小程序官方原图,登录流程如上图所示,下面一步步进行以及说一下碰到的坑。 1.wx.login()获取code         调用微信小程序官方提供的方法获取code提供给后端用以换取session_key、openid。         注意:code只能使用一次就会失效,且有效期为5分钟 2.后端收到

    2024年02月12日
    浏览(52)
  • 【微信小程序】纯前端获取用户手机号码

    2024.02.04更新 作者最近做了一个小程序项目,证明了纯前端获取手机号是不可以发布的,首先审核时会因为appsecret明文而不通过,就算你使用某种加密方法绕过审核,正式发布后在真机环境还是不可以使用的,所以本方法仅供练习使用,在第二步拿到code之后传给后端就可以了

    2024年02月03日
    浏览(55)
  • 微信小程序获取用户手机号码教程(前端+后端)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在开发微信小程序时,获取用户手机号码是常见的需求之一。本教程将为你详细介绍如何在前端和后端实现获取用

    2024年02月08日
    浏览(58)
  • 微信小程序获取用户手机号码教程(前端+后端)

    在开发一款微信小程序时,需要用户进行微信登录,获取用户的手机号码来作为用户的唯一标识(userId),于是探索获取用户手机号码的方式; (当然,通过wx.login来获取code,进而换取用户的openid也是可以的) 目前版本的微信小程序获取用户手机号码的方式如下: 前端开发

    2024年02月12日
    浏览(49)
  • 微信小程序(抖音小程序):手机号码解析失败解决方案

            在小程序开发中,可能需要用户授权获取用户信息,而用户信息涉及到手机号等敏感数据,一般的小程序开发平台,会将数据进行加密,然后通过对称加密算法进行加密解密。在获取手机号的过程中由于流程的理解错误可能会出现解密手机号失败的问题。本文介绍一

    2024年02月06日
    浏览(76)
  • 微信小程序获取手机号码 phonenumber.getPhoneNumber 提示47001错误

    微信小程序获取手机号码 phonenumber.getPhoneNumber 提示47001错误 经过测试, 文档说的是body 类型 实际却是json类型 正确代码如下:

    2024年02月06日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包