Brave浏览器JavaScript Math.random是否采用xorshift128+算法?
Brave浏览器
Math.random()的底层PRNG实现说明 明确结论:Brave浏览器当前所有正式发布版本的Math.random()方法,底层和Chrome、Edge等Chromium系主流浏览器一致,采用xorshift128+伪随机数生成算法。
相关细节如下:
- Brave的JavaScript执行引擎基于上游Chromium项目的V8引擎做隐私特性定制,并未修改V8原生的
Math.random()核心实现逻辑。V8引擎早在2015年底就完成了PRNG方案替换,将原本存在低位分布偏差、序列周期短等缺陷的MWC1616算法下线,全面切换为性能、随机分布质量、内存占用表现更优的xorshift128+,这一改动后续被所有基于V8/Chromium的浏览器默认继承。 - Brave的指纹追踪防护功能不会改动
Math.random()的底层算法选型,仅会在第三方跨域iframe等容易被用于设备指纹采集的上下文里,对输出的随机数序列做反追踪扰动,第一方同域上下文下的Math.random()运行逻辑和标准Chromium完全一致。 - 2015年之后,搭载SpiderMonkey、JavaScriptCore引擎的其他主流浏览器也陆续完成了PRNG方案切换,xorshift128+是当前桌面端浏览器
Math.random()的通用底层实现方案。
补充使用提示:
// 安全敏感场景禁止使用Math.random() // 生成加密密钥、鉴权令牌等场景请调用密码学安全随机接口 const secureRandomBuf = new Uint32Array(1); crypto.getRandomValues(secureRandomBuf);
Math.random()绑定的xorshift128+属于非密码学安全PRNG,输出序列存在可预测性,绝对不能用于加密、鉴权等高安全要求场景。
内容的提问来源于stack exchange,提问作者Shubhojoy Mitra
相关产品推荐
相关产品推荐

