zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    作业练习
    作业练习
    作业
    作业
    作业
    作业
    作业
    作业
    作业
    作业
  • 原文地址:https://www.cnblogs.com/vickylinj/p/11956434.html
Copyright © 2011-2022 走看看