window.crypto.getRandomValues()的兼容性

D.W*_*.W. 15 javascript random cryptography web-applications

我需要在Javascript中生成加密安全的伪随机数.我知道window.crypto.getRandomValuesAPI,它完全符合我的要求.但是,我也知道它是在最近(2011年左右)推出的.

我可以安全地假设window.crypto.getRandomValues存在,或者使用它会在某些浏览器上引入兼容性问题吗?是否有任何主要(广泛使用)的浏览器不支持window.crypto.getRandomValues(包括移动或桌面浏览器),如果有,我需要担心哪些?我很高兴得知有足够的支持,我不再需要担心回退方法,如果确实如此.

bob*_*nce 21

我可以安全地假设window.crypto.getRandomValues存在

一如既往地取决于您的目标市场,并将随着时间的推移而变化. caniuse.com列出了哪些浏览器支持它并计算浏览器市场份额.

以下是摘要:

  • IE 11:带前缀
  • IE Mobile 11:带前缀

  • Firefox:21+

  • Firefox Mobile:21+

  • Safari:来自6.1

  • Safari Mobile:7.1

  • Chrome:11+

  • Chrome for Mobile:23岁以上
  • Android浏览器:4.4

  • 歌剧:15岁以上

  • Opera Mobile:36岁以上
  • Opera Mini:没有

  • 将在IE11中,也许在window.msCrypto下. (4认同)

lau*_*ent 7

要获得更完整,最新的视图,最好只检查caniuse.com:

http://caniuse.com/#feat=getrandomvalues

截至2015年12月,除Opera Mini外,所有现代浏览器都支持它:

在此输入图像描述


Ric*_*ant 6

const crypto = window.crypto ||
  window.msCrypto || {
    getRandomValues: array => {
      for (let i = 0, l = array.length; i < l; i++) {
        array[i] = Math.floor(Math.random() * 256);
      }
      return array;
    }
  };

  if (crypto.getRandomValues === undefined) {
    throw new Error("crypto is not supported on this browser");
  }
Run Code Online (Sandbox Code Playgroud)

  • 因此,要回答您的问题,并非所有浏览器都支持它。这就是我发布这个的原因,因为它会回落到可用的东西。随意投反对票。只是认为它很有用,可以替代其他答案 (2认同)