我正在开发一个小型 JS 库,它由几个用于 Web、NodeJS 和 React Native 的 npm 包组成,但它们都使用共享核心库。
在核心库中,我一直在使用
Math.random()
,但最近发现一些令人讨厌的随机性问题,导致某些 React Native 引擎的某些版本出现大量重复。我决定切换到 rng 的单一事实来源,这将在平台之间保持一致。
我已经将
crypto-js
用于 sha256
,如果我也能利用 crypto-js
来从 Math.random()
切换,那就太棒了。
我检查了
crypto-js
docs,只发现CryptoJS.lib.WordArray.random
生成随机字节,其他东西似乎与散列和密码相关。我很确定可以将这些字节转换为 0-1 随机值,但我不完全确定它是否比 Math.random()
更可靠。
问题:有没有办法使用
Math.random()
生成类似于crypto-js
的可靠随机0 - 1值?
由于没有原生可用的替代品
Math.random()
,我最终使用了 React Native 的专用库
该库是 react-native-get-random-values,它使用 IOS/Android 本机实现进行加密