此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Crypto.getRandomValues()

基线 广泛可用

自 2015年7月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

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

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

语法

cryptoObj.getRandomValues(typedArray);

参数

typedArray

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

异常事件

QuotaExceededError DOMException

如果请求的长度超过 65536 字节,则抛出该异常。

例子

js
/* 假设 window.crypto.getRandomValues 可用 */

var array = new Uint32Array(10);
window.crypto.getRandomValues(array);

console.log("Your lucky numbers:");
for (var i = 0; i < array.length; i++) {
  console.log(array[i]);
}

标准

规范
Web Cryptography Level 2
# Crypto-method-getRandomValues

浏览器兼容性

参见