关于crypto:https://developer.mozilla.org/zh-CN/docs/Web/API/Crypto/getRandomValues
Crypto.getRandomValues() 方法让你可以获取符合密码学要求的安全的随机值。传入参数的数组被随机值填充(在加密意义上的随机)。
为了确保足够的性能,不使用真正的随机数生成器,但是它们正在使用具有足够熵值伪随机数生成器。它所使用的 PRNG 的实现与其他不同,但适用于加密的用途。该实现还需要使用具有足够熵的种子,如系统级熵源。
这种写法在IE浏览器上是不兼容的
window.crypto.getRandomValues()
IE浏览器兼容写法:
let crypto = window.crypto || window.msCrypto;
if (crypto) {
return crypto.getRandomValues(array);
}