使用場景 微信小程序用戶登錄獲取手機號
第一步:下載cryptojs放在根目錄utils下點這里下載cryptojs
第二步:在utils文件夾下命名WXBizDataCrypt.js文件赴蝇,并寫入下面的內(nèi)容
var Crypto = require('./cryptojs/cryptojs.js').Crypto;
var app = getApp();
function WXBizDataCrypt(appId, sessionKey) {
this.appId = appId
this.sessionKey = sessionKey
}
WXBizDataCrypt.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绞幌,數(shù)據(jù)采用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 = WXBizDataCrypt
第三步解密:
//解密獲取手機號
getphonenumber(e) {;
let phone = e.detail.encryptedData;
let iv = e.detail.iv;
const RdWXBizDataCrypt = require('../../utils/WXBizDataCrypt.js');
var appId = '';//當(dāng)前小程序appId
let session_key = wx.getStorageSync('session_key');//后臺獲取
let key = session_key;
const pc = new WXBizDataCrypt(appId, key);
const data = pc.decryptData(phone, iv);
console.log(data.phoneNumber); //當(dāng)前手機號碼
},
這樣就成功獲取到解密后的手機號了废亭。
原文鏈接(https://blog.csdn.net/slow097/article/details/119677587
)