公司主体小程序,采用uniapp云开发来开发微信小程序,对接的是阿里云。业务需要获取用户微信绑定的手机号码,不知道怎么解密,烦请社区大佬赐教!
按照网传方法,在 npm install 了 crypto-js@3.3.0,在封装解密方法时,已经获取到 WordArray,然后不知道如何变成明文数据。具体代码如下:
import Crypto from 'crypto-js'
console.log('Crypto.util', Crypto);
function RdWXBizDataCrypt(appId, sessionKey) {
this.appId = appId
this.sessionKey = sessionKey
}
RdWXBizDataCrypt.prototype.decryptData = function(encrypted, ivData) {
var encryptedData = Crypto.enc.Base64.stringify(Crypto.enc.Utf8.parse(encrypted))
var key = Crypto.enc.Base64.stringify(Crypto.enc.Utf8.parse(this.sessionKey))
var iv = Crypto.enc.Base64.stringify(Crypto.enc.Utf8.parse(ivData))
// 对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充
try {
// 解密
var bytes = Crypto.AES.decrypt(encryptedData, key, {
asBpytes: true,
iv: iv,
mode: Crypto.mode.CBC,
padding: Crypto.pad.Pkcs7
});
console.log('bytes', bytes);
var decryptResult = Crypto.enc.Base64.parse(bytes)
console.log('decryptResult', decryptResult);
} catch (err) {
console.log(err)
}
// if (decryptResult.watermark.appid !== this.appId) {
// console.log(err)
// }
return decryptResult
}
export default RdWXBizDataCrypt
m***@qq.com (作者)
你好,对于你说的第一种方式,使用的 cryptojs 是什么版本?我看最新版本和3.3.0版本都没有 createDecipheriv 方法的,如何调用?对于第二种,可能是我的问题中没有描述清除,我想要的是前端解密。项目架构本身就是 serverless,没有后端解密接口可以请求的。
2022-11-01 10:12
DCloud_uniCloud_WYQ
回复 m***@qq.com: uni-id-co是后端代码用的nodejs自带crypto模块。你是想把decryptResult(base64)转成字符串是吧。你就以 base64转字符串 为关键词搜一下就行,很多现成的代码。另外强烈建议解密还是放在服务器进行,客户端并不安全
2022-11-01 13:13
a***@guoyuan.digital
回复 m***@qq.com: 你好,你uniCloud云函数引入解密文件的时候有出现找不到解密文件的问题嘛
2023-02-04 17:56