微信小程序-前端解密手机号

微信小程序-前端解密手机号

前几天博主所开发的小程序用到了前端解密获取用户手机号的功能,网上这块的资料不是特别的详细,在此做一个记录。

使用场景 微信小程序用户登录获取手机号

第一步:下载cryptojs放在根目录utils下(点击下载cryptojs
在这里插入图片述
第二步:在utils文件夹下命名RdWXBizDataCrypt.js文件,并写入下面的内容

var Crypto = require('./cryptojs/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)
    // console.log(sessionKey)
    var key = Crypto.util.base64ToBytes(this.sessionKey);
    var iv = Crypto.util.base64ToBytes(iv);
    // console.log(encryptedData,key,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)
    }
    if (decryptResult.watermark.appid !== this.appId) {
        console.log(err)
    }
    return decryptResult
}
module.exports = RdWXBizDataCrypt

第三步解密:

    //解密获取手机号
        getphonenumber(e) {;
            let phone = e['mp'].detail.encryptedData;
            let iv = e['mp'].detail.iv;
            const RdWXBizDataCrypt = require('../../utils/RdWXBizDataCrypt.js');
            var appId = '';//当前小程序appId
            let session_key = wx.getStorageSync('session_key');//后台获取
            let key = session_key;
            const pc = new RdWXBizDataCrypt(appId, key);
            const data = pc.decryptData(phone, iv);
            console.log(data.phoneNumber); //当前手机号码
        },

这样就成功获取到解密后的手机号了。

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值