加密:getRandomValues() 方法
**Crypto.getRandomValues()
** 方法允许您获取加密强随机值。作为参数给出的数组将填充随机数(以其加密意义上的随机数)。
为了保证足够的性能,实现并没有使用真正的随机数生成器,而是使用了一个以具有足够熵的值为种子的伪随机数生成器。伪随机数生成器算法 (PRNG) 可能因用户代理而异,但适用于加密目的。
getRandomValues()
是 Crypto
接口中唯一可以从不安全上下文中使用的成员。
语法
js
getRandomValues(typedArray)
参数
typedArray
-
一个基于整数的
TypedArray
,即以下之一:Int8Array
、Uint8Array
、Uint8ClampedArray
、Int16Array
、Uint16Array
、Int32Array
、Uint32Array
、BigInt64Array
、BigUint64Array
(但不是Float32Array
也不Float64Array
)。数组中的所有元素都将被随机数覆盖。
返回值
与作为 typedArray
传递的相同数组,但其内容已替换为新生成的随机数。请注意,typedArray
在原地修改,不会创建副本。
异常
QuotaExceededError
DOMException
-
如果
typedArray
的byteLength
超过 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 的浏览器中加载。
另请参阅
- Web 加密 API
Math.random
,一个非加密的随机数源。