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

  • 相关阅读:
    PAT 1005. 继续(3n+1)猜想 (25)
    PAT 1004. 成绩排名 (20)
    android小游戏 飞机躲子弹
    PAT 1004. 成绩排名 (20) JAVA
    PAT 1003. 我要通过!(20) JAVA
    PAT 1003. 我要通过!(20)
    PAT 1002. 写出这个数 (20)
    NEERC, Northern Subregional Contest 2012 B 乱搞or搜索
    SGU 167 未解 dp
    Bucharest, Romania 2013 A Russian Dolls 贪心
  • 原文地址:https://www.cnblogs.com/vickylinj/p/11956434.html
Copyright © 2011-2022 走看看