Crypto: getRandomValues() 方法
注意:此功能在 Web Workers 中可用。
Crypto.getRandomValues() 方法可让您获取加密强度的随机值。作为参数传入的数组将填充随机数字(在密码学意义上的随机)。
为保证足够的性能,实现并非使用真正的随机数生成器,而是使用一个以具有足够熵的值为种子的伪随机数生成器。伪随机数生成器算法(PRNG)可能因 用户代理 而异,但适用于加密目的。
getRandomValues() 是 Crypto 接口中唯一可以在不安全上下文中使用的成员。
语法
js
getRandomValues(typedArray)
参数
typedArray-
一个基于整数的
TypedArray,它是以下类型之一:Int8Array、Uint8Array、Uint8ClampedArray、Int16Array、Uint16Array、Int32Array、Uint32Array、BigInt64Array、BigUint64Array(但不包括Float16Array、Float32Array或Float64Array)。数组中的所有元素都将被新的随机数覆盖。
返回值
传入的 typedArray 相同,但其内容已被新生成的随机数替换。请注意,typedArray 是就地修改的,不会创建副本。
异常
QuotaExceededError-
如果
typedArray的byteLength超过 65,536,则会抛出此异常。
用法说明
对于密钥生成,建议使用 generateKey() 方法,该方法保证在安全上下文中运行。
Web Cryptography 规范没有规定最低熵度。相反,用户代理被鼓励在生成随机数时提供它们所能提供的最佳熵,使用内置于用户代理本身的、定义良好且高效的伪随机数生成器,但该生成器以来自外部伪随机数源的值为种子,例如平台特定的随机数函数、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 加密级别 2 # Crypto-method-getRandomValues |
浏览器兼容性
加载中…
另见
- Web Crypto API
Math.random,一个非加密的随机数源。