在 HBuilderX 2.5.1 ,uniapp 里使用加密算法,打包到 app 就无法使用 nodejs自家的 crypto,第三方 bip39, bitcore-mnemonic, 等等一大堆库。追踪下来问题在 crypto.randomBytes,
要么 crypto.randomBytes(16)
就报错
Error: Secure random number generation is not supported by this browser.
09:32:17.966 Use Chrome, Firefox or Internet Explorer 11 __ERROR
要么 window.crypto.getRandomBytes(new Uint8Array(16))
也报错
window.crypto.getRandomValues(new Uint8Array(16)) 在web能用,但没必要。在 app 报错
[ERROR] : ReferenceError: Can't find variable: window __ERROR
无计可施。谁能解决吗?
13 个回复
aboutlikefish
还是没有修复,麻烦给出个解决方案
crypto使用范围还是很广的
DCloud_UNI_FXY
发一个最简单的demo工程吧
yuanjin (作者)
多谢追踪。我发了个zip附件,但是看不到我自己的回复贴,是在审核压缩包吗...
2020-02-24 19:41
yuanjin (作者)
再发个试试...
环境 HBuilder 2.5.120200103 MacOS 新建 uni-app 项目,仅仅修改了 pages/index/index.vue
网上找到的最接近的线索是 https://github.com/steemit/steem-js/issues/398
DCloud_UNI_FXY
已确认问题,下个Alpha版本会修复此问题
2020-02-24 20:18
yuanjin (作者)
回复 DCloud_UNI_FXY: 感谢!长出一口气,太好了。期待中
2020-02-24 22:05
t***@126.com
回复 DCloud_UNI_FXY: 小程序无法使用
2024-08-27 12:05
DCloud_UNI_GSQ
HBuilderX 2.6.3 alpha 已经修复
yuanjin (作者)
太好了,感谢!
经简单测试,
Mac 10.15 Catalina + HBuilder 2.6.4 alpha 打的iOS安装包 已经能够正常加解密。
安卓环境似乎还有些问题,我继续测试后告知结果。
2020-03-13 13:58
yuanjin (作者)
经测试,在iOS 平台上很完美了。不过在安卓app和微信小程序里,还发现几个问题,请见附件。
问题集中在 nodejs自带的 crypto 库,以及 bip39 库:
1). bip39.mnemonicToSeedSync: 助记词转化为种子。在所有其他环境下都ok,但是安卓app失败。
2). bip39.validateMnemonic: 验证助记词。在安卓上、安卓版微信自带浏览器里失败。
3). 微信小程序仍然对 crypto.randomBytes报错,导致多个测试失败。
有的应当还是打包问题,有的应该是安卓环境或者这些库本身的问题了。2.6.4 alpha 对我的需求已经基本满足(我主要针对浏览器和iOS平台),以上测试结果供您参考。
半晴雨滴
这个包,运行到浏览器报错:文件查找失败:'bs58' at node_modules\coinstring\lib\coinstring.js:1
少了个依赖包:npm i --save bs58
2020-03-16 11:27
yuanjin (作者)
回复 半晴雨滴: 我这个包里没有用到 bs58 ,没有用来生成地址。因为从公钥到地址只用到哈希算法,测试过没有问题,就没放进来。这个demo工程里只保留了还有兼容性问题的。
2020-03-16 12:42
暴躁的货车
兄台, 我这边在开发钱包APP的时候也遇到你类似的情况,项目引用了bitcore-wallet-client": "^8.20.4这个包,我看了里面也需要用到bitcore-mnemonic,bitcore-lib等,现在真机调试就白屏,我也无计可施了,大佬您是怎么解决的呢?问题详情:https://ask.dcloud.net.cn/question/99613
yuanjin (作者)
刚登录看到消息,不好意思。这没什么好办法,现在最新版 uniapp 也还有不少加密相关函数是不支持的。只好一层层跟踪下去,看到底哪个函数调用出错,然后找其他包的类似函数去替换,看侥幸有没有能用的。现在主要是 android app 还无法支持 mnemonic 相关功能,其他基本都有办法绕过了。
2020-07-04 19:51
yuanjin (作者)
回复 2***@qq.com: 我也没有解决bip39问题
2020-09-08 08:58
雨时节
我也被这个问题搞死了。。。怎么办。。。
w***@xinboxinmo.com
什么时候能修复
aboutlikefish
把函数名字改了就行
1***@qq.com
微信小程序 crypto.randomBytes 这个解决了吗, 还是报错
香蕉不是笨啦啦
这个问题还在
2022-04-27 13:34
c***@126.com
就离谱,这么基础的一个功能居然用不了
1***@qq.com
这bug修复了么?
怎么我用最新版的hbuilderx 还是报这个错误呢?
我刚发的帖子 https://ask.dcloud.net.cn/question/172128 ,里面就有测试代码
2***@qq.com - 大侠
兄弟 这个问题最后解决了吗?安卓还是不支持crypto.getRandomValues
yuanjin (作者)
还是没有彻底解决,安卓上测试确实还不支持 crypto
2024-06-07 15:04