微信小程序前端解密手机号报错: Error:Illegal Buffer at i.decryptData( ...

img

我的逻辑:

// 解密手机号
export async function decryptPhoneNumber(e) {
     const wxLogin = await wx.login();

    const login = await http("/wechat/api/login", {
        code: wxLogin.code
    });
    if (login.code !== 0) return;

    uni.setStorageSync('openId', login.data.openid);
    uni.setStorageSync('session-key', login.data.sessionKey);


    // 1/3 解密手机号
    const WXBizDataCrypt = require('@/utils/WXBizDataCrypt.js'); // 来源:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#%E5%8A%A0%E5%AF%86%E6%95%B0%E6%8D%AE%E8%A7%A3%E5%AF%86%E7%AE%97%E6%B3%95
    const pc = new WXBizDataCrypt($store.state.programInfo.appId, uni.getStorageSync('session-key'));
    const data = pc.decryptData(e.detail.encryptedData, e.detail.iv);  // 到这里 到这里到这里到这里到这里到这里到这里   报错,执行不下去了


    // 2/3 存储手机号
    const save = await saveUser({
        phonenumber: data.phoneNumber
    })

    // 3/3 查询账户
    const account = await queryAccount();
    if (account.code !== 0) return;

    return account.data;
}

WXBizDataCrypt.js文件是从微信官方获取的

img

这个错误可能是由于以下原因引起的:

加密数据无效:请确保你尝试解密的数据是有效的加密数据。检查数据来源,确保它是由微信后端加密并通过前端提供的。
加密/解密密钥不匹配:如果你在前端使用与后端不同的密钥进行解密,可能会出现此错误。请确保你使用与后端相同的密钥进行解密。
解密方法不正确:请确保你在前端使用的解密方法与后端使用的加密方法相匹配。不同的加密/解密算法需要使用相应的解密方法。