当前位置: 首页 > news >正文

vue3+hubuilderX开发微信小程序使用elliptic生成ECDH密钥对遇到的问题

1、Cannot read properties of null (reading ‘getBytes’)
具体使用方式为

import EC from 'elliptic/lib/elliptic/ec';
const ec = new EC('p256'); // 选择椭圆曲线secp256k1的别名是p256
const aliceKeyPair = ec.genKeyPair();

增加log后发现问题产生原因在const aliceKeyPair = ec.genKeyPair();函数。故进行了进一步的排查找到node_modules/elliptic/lib/elliptic/ec/index.js路径下的EC.prototype.genKeyPair = function genKeyPair(options) 函数后发现问题在于var brorand = require(‘brorand’);这个库的引入,这里我因为调试更改了引入后的名称注意分辨。
同时注意brorand的路径应该为node_modules/brorand/index.js而非Microsoft/TypeScript/5.2/node_modules/@types/brorand/index.d.ts因为这个路径问题多调试了两个小时各种分析。

var drbg = new HmacDRBG({hash: this.hash,pers: options.pers,persEnc: options.persEnc || 'utf8',entropy: options.entropy || brorand(this.hash.hmacStrength),entropyEnc: options.entropy && options.entropyEnc || 'utf8',nonce: this.n.toArray(),});

在node_modules/brorand/index.js中存在

function Rand(rand) {this.rand = rand;
}

而elliptic/lib/elliptic/ec/index.js在调用时似乎并未传入对应的rand随机数生成函数。所以产生了Cannot read properties of null (reading ‘getBytes’)问题。
解决方案为将node_modules/brorand/index.js中的Rand替换为以下代码即可正常使用。

const customRand = {getBytes: function(n) {const arr = new Uint8Array(n);// 自定义随机数生成逻辑(例如使用 Math.random(),但不推荐用于加密)for (let i = 0; i < n; i++) {arr[i] = Math.floor(Math.random() * 256);}return arr;}
};function Rand(rand) {this.rand = customRand;
}

这部分内容在修改完成后需要把微信开发者工具完全关闭后再重新打开才会生效。包的修改都需要进行这个操作。
但是我也不知道是否应该在node_modules中直接进行修改这样子不会导致后续包更新导致修改被覆盖或者其他问题嘛?欢迎懂的大佬在评论区交流一下。我是小程序新手。

http://www.dtcms.com/a/465126.html

相关文章:

  • 跑马灯组件 Vue2/Vue3/uni-app/微信小程序
  • 网络攻防实战:如何防御DDoS攻击
  • 能力(5)
  • 多模态医疗大模型Python编程合规前置化与智能体持续学习研究(下)
  • wordpress网站不显示系列秦皇岛网站制作与网站建设
  • 【2026计算机毕业设计】基于Springboot的广西美食宣传系统
  • Instagram投放转化率还能再提升!
  • Shell 脚本核心语法与企业实战案例
  • 学习爬虫第三天:数据提取
  • LightGBM评估指标中至关重要的参数【average】介绍
  • 基于tcl脚本构建Xilinx Vivado工程
  • 从3C电子到半导体封装,微型导轨具备哪些优势?
  • TCP中的流量控制
  • 专业建站推广网络公司网站建设和维护实训
  • AMD发布专为工业计算与自动化平台打造的锐龙嵌入式9000系列处理器
  • 短视频矩阵系统哪个好用?2025最新评测与推荐|小麦矩阵系统
  • 代理IP+账号矩阵:Cliproxy与TGX Account如何赋能品牌全球化表达?
  • 张量、向量与矩阵:多维世界的数据密码
  • 前端框架深度解析:Angular 从架构到实战,掌握企业级开发标准
  • 廊坊做网站教程泉州网站建设技术支持
  • 安全月报 | 傲盾DDoS攻击防御2025年9月简报
  • 有哪些做品牌特卖的网站做网页专题 应该关注哪些网站
  • 探索MySQL8.0隐藏特性窗口函数如何提升数据分析效率
  • 对于生物样本库的温湿度监控是如何实现对数据进行历史数据分析的呢?
  • 深入解析 Amazon Athena:云上高效数据分析的关键引擎
  • [SQL]如何使用窗口函数提升数据分析效率实战案例解析
  • Centos 7 | 定时运行 gzip 进程导致 CPU 过高,但无法确定系统自动运行 gzip 的原因 排查思路
  • Python爬虫实战:获取证监会外国投资机构信息及数据分析
  • seo网站推广费用装饰公司看的设计网站
  • 全栈开发杂谈————JAVA微服务全套技术栈详解