加密:getRandomValues() 方法

基线 广泛可用

此功能已得到很好的确立,并且可以在许多设备和浏览器版本上运行。它自以下时间起在各个浏览器中可用 2015年7月.

**Crypto.getRandomValues()** 方法允许您获取加密强随机值。作为参数给出的数组将填充随机数(以其加密意义上的随机数)。

为了保证足够的性能,实现并没有使用真正的随机数生成器,而是使用了一个以具有足够熵的值为种子的伪随机数生成器。伪随机数生成器算法 (PRNG) 可能因用户代理而异,但适用于加密目的。

getRandomValues()Crypto 接口中唯一可以从不安全上下文中使用的成员。

语法

js
getRandomValues(typedArray)

参数

typedArray

一个基于整数的TypedArray,即以下之一:Int8ArrayUint8ArrayUint8ClampedArrayInt16ArrayUint16ArrayInt32ArrayUint32ArrayBigInt64ArrayBigUint64Array(但不是 Float32Array 也不 Float64Array)。数组中的所有元素都将被随机数覆盖。

返回值

与作为 typedArray 传递的相同数组,但其内容已替换为新生成的随机数。请注意,typedArray 在原地修改,不会创建副本。

异常

QuotaExceededError DOMException

如果 typedArraybyteLength 超过 65,536,则抛出此异常。

用法说明

对于密钥生成,请首选generateKey() 方法,该方法保证在安全上下文中运行。

Web 加密规范没有规定最低的熵度。相反,鼓励用户代理在生成随机数时提供最佳的熵,使用用户代理本身内置的定义明确、高效的伪随机数生成器,但以从外部伪随机数源(例如平台特定的随机数函数、Unix /dev/urandom 设备或其他随机或伪随机数据源)获取的值为种子。

示例

js
const array = new Uint32Array(10);
self.crypto.getRandomValues(array);

console.log("Your lucky numbers:");
for (const num of array) {
  console.log(num);
}

规范

规范
Web 加密 API
# Crypto-method-getRandomValues

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅