Crypto: Methode getRandomValues()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Die Crypto.getRandomValues()-Methode ermöglicht es Ihnen, kryptographisch starke Zufallswerte zu erhalten. Das als Parameter übergebene Array wird mit Zufallszahlen (im kryptographischen Sinne zufällig) gefüllt.

Um ausreichende Leistung zu gewährleisten, verwenden Implementierungen keinen echten Zufallszahlengenerator, sondern einen Pseudozufallszahlengenerator, der mit einem ausreichend entropiereichen Wert gesät wird. Der Algorithmus des Pseudozufallszahlengenerators (PRNG) kann zwischen verschiedenen User Agents variieren, ist jedoch für kryptographische Zwecke geeignet.

getRandomValues() ist das einzige Element des Crypto-Interfaces, das in einem unsicheren Kontext verwendet werden kann.

Syntax

js
getRandomValues(typedArray)

Parameter

typedArray

Ein ganzzahlig basiertes TypedArray, das eines der folgenden sein kann: Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array (aber nicht Float32Array noch Float64Array). Alle Elemente im Array werden mit Zufallszahlen überschrieben.

Rückgabewert

Das gleiche Array, das als typedArray übergeben wurde, aber mit neu generierten Zufallszahlen ersetzt. Beachten Sie, dass typedArray an Ort und Stelle modifiziert wird und keine Kopie erstellt wird.

Ausnahmen

QuotaExceededError DOMException

Wird ausgelöst, wenn die byteLength von typedArray 65.536 überschreitet.

Nutzungshinweise

Bevorzugen Sie die Methode generateKey() zur Schlüsselerzeugung, die garantiert in einem sicheren Kontext ausgeführt wird.

Es gibt keinen minimalen Grad an Entropie, der durch die Web Cryptography-Spezifikation vorgeschrieben wird. Stattdessen werden User Agents gedrängt, die bestmögliche Entropie zu bieten, die sie können, wenn sie Zufallszahlen generieren, unter Verwendung eines gut definierten, effizienten Pseudorandom-Zahlengenerators, der in den User Agent selbst eingebaut ist, jedoch gesät mit Werten, die von einer externen Quelle für Pseudorandom-Zahlen stammen, wie z. B. eine plattformspezifische Zufallszahlen-Funktion, das Unix-/dev/urandom-Gerät oder andere Quellen von zufälligen oder pseudorandom Daten.

Beispiele

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

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

Spezifikationen

Specification
Web Cryptography API
# Crypto-method-getRandomValues

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch