• Math.random()的加密安全替换方法window.crypto.getRandomValues


    Math.random()

    返回介于 0(包含) ~ 1(不包含) 之间的一个随机数。
    Math.random()函数不是加密安全的随机数生成器。

    window.crypto.getRandomValues

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

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

    语法

    cryptoObj.getRandomValues(typedArray);

    参数

      typedArray是一个基于整数的 TypedArray,它可以是 Int8ArrayUint8ArrayInt16Array、 Uint16Array、 Int32Array 或者 Uint32Array。在数组中的所有的元素会被随机数重写。(注释:生成的随机数储存在 typedArray 数组上。)

    例子

    window.crypto.getRandomValues(new Int8Array(2))//Int8Array(2) [44, -3]
    window.crypto.getRandomValues(new Uint8Array(2))//Uint8Array(2) [218, 119]
    window.crypto.getRandomValues(new Int16Array(2))//Int16Array(2) [24582, -15808]
    window.crypto.getRandomValues(new Uint16Array(2))//Uint16Array(2) [55391, 55756]
    window.crypto.getRandomValues(new Int32Array(2))//Int32Array(2) [1574608122, -836595554]
    window.crypto.getRandomValues(new Uint32Array(2))//Uint32Array(2) [1906545366, 2391348462]

    Math.random()的等价表达式:window.crypto.getRandomValues(new Uint8Array(1)) * 0.001

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

  • 相关阅读:
    正则表达式基础以及应用
    日常使用之css篇
    echarts的使用总结
    &#65279导致页面顶部空白一行
    vue.js单页面应用实例
    BFC的外边距折叠
    .net 跳出Frameset框架
    Cache缓存使用
    Kafka集群搭建及安全机制手册
    PHP学习笔记
  • 原文地址:https://www.cnblogs.com/vickylinj/p/11956434.html
Copyright © 2020-2023  润新知