美文网首页
JS随机数与安全

JS随机数与安全

作者: 草帽lufei | 来源:发表于2020-11-16 11:19 被阅读0次

Math.random()

JavaScript高级程序设计(第4版)

Math.random() 方法返回一个 0~1 范围内的随机数,其中包含 0 但不包含 1。

MDN

Math.random() 函数返回一个浮点,伪随机数在范围0到小于1,也就是说,从0(包括0)往上,但是不包括1(排除1),然后您可以缩放到所需范围。实现将初始种子选择到随机数生成算法;它不能被用户选择或重置。

一个非密码学安全的随机数来源。

JavaScript4 高级程序设计(第4版)中 注意 提示:

Math.random()方法在这里出于演示目的是没有问题的。如果是为了加密而需要生成随机数(传给生成器的输入需要较高的不确定性),那么建议使用window.crypto. getRandomValues()。

思考

之前没看到关于 Math.ramdom() 的类似提示,发现日常开发中有时也会遇到通过 Math.random() 进行一些基础的随机加密操作,但从来没意识到安全问题。接下来看下 window.crypto. getRandomValues()

window.crypto.getRandomValues()

MDN

Crypto.getRandomValues() 方法让你可以获取符合密码学要求的安全的随机值。传入参数的数组被随机值填充(在加密意义上的随机)。

为了确保足够的性能,不使用真正的随机数生成器,但是它们正在使用具有足够熵值伪随机数生成器。它所使用的 PRNG 的实现与其他不同,但适用于加密的用途。该实现还需要使用具有足够熵的种子,如系统级熵源。

在浏览器中运行

window.crypto.getRandomValues()

总结

开发中如果只是随意生成一个数字,可以直接使用 Math.random(),如果涉及到安全就需要使用 window.crypto.getRandomValues() 了,注意这里的 getRandomValues 的参数传递,在使用时也需要确保 window.crypto.getRandomValues 可用,在 node 中使用需要安装 get-random-values 库。

参考链接

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/random

https://developer.mozilla.org/zh-CN/docs/Web/API/Crypto

https://developer.mozilla.org/zh-CN/docs/Web/API/RandomSource/getRandomValues

https://www.npmjs.com/package/get-random-values

相关文章

  • JS随机数与安全

    Math.random() JavaScript高级程序设计(第4版) Math.random() 方法返回一个 ...

  • css笔记

    【js随机数】/////////////////////////////////// {{Math.round(M...

  • 线程安全随机数

    ThreadLocalRandom.getProbe()线程安全随机数

  • 无处不在的随机数

    目录: 什么是随机数 随机数分类 伪随机数生成器 真随机数生成器 各种语言中的随机数 使用系统时间作为种子是否安全...

  • PHP生成随机数

    PHP生成随机数,相信大家在做项目的时候是最常见的吧。js生成随机数,PHP生成随机数。 应用场景:用户注册/登录...

  • 浏览器阻止缓存

    1、引入js的时候,在后面加入随机数

  • js 给link和script标签添加随机数

    //给css和js添加随机数$("link,script").each(function () { var ...

  • Mock.js新手教程

    1.什么是Mock.js? 生成随机数据,拦截 Ajax 请求。 通过随机数据,模拟各种场景;不需要修改既有代码,...

  • Vue 的 mock.js初体验

    1.什么是Mock.js? 生成随机数据,拦截 Ajax 请求。 通过随机数据,模拟各种场景;不需要修改既有代码,...

  • 2019-07-09

    伪随机数,是通过一些数学算法生成的随机数,并非真正的随机数。密码学上的安全伪随机数应该是不可压缩的。对应的“真随机...

网友评论

      本文标题:JS随机数与安全

      本文链接:https://www.haomeiwen.com/subject/zrvabktx.html