Crypto: getRandomValues() 方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

注意:此功能在 Web Workers 中可用。

Crypto.getRandomValues() 方法可讓您獲取加密強度的隨機值。作為引數傳入的陣列將填充隨機數字(在密碼學意義上的隨機)。

為保證足夠的效能,實現並非使用真正的隨機數生成器,而是使用一個以具有足夠熵的值為種子的偽隨機數生成器。偽隨機數生成器演算法(PRNG)可能因 使用者代理 而異,但適用於加密目的。

getRandomValues()Crypto 介面中唯一可以在不安全上下文中使用的成員。

語法

js
getRandomValues(typedArray)

引數

typedArray

一個基於整數的 TypedArray,它是以下型別之一:Int8ArrayUint8ArrayUint8ClampedArrayInt16ArrayUint16ArrayInt32ArrayUint32ArrayBigInt64ArrayBigUint64Array(但不包括 Float16ArrayFloat32ArrayFloat64Array)。陣列中的所有元素都將被新的隨機數覆蓋。

返回值

傳入的 typedArray 相同,但其內容已被新生成的隨機數替換。請注意,typedArray 是就地修改的,不會建立副本。

異常

QuotaExceededError

如果 typedArraybyteLength 超過 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

瀏覽器相容性

另見