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
getRandomValues(typedArray)
Parameter
typedArray
-
Ein ganzzahlig basiertes
TypedArray
, das eines der folgenden sein kann:Int8Array
,Uint8Array
,Uint8ClampedArray
,Int16Array
,Uint16Array
,Int32Array
,Uint32Array
,BigInt64Array
,BigUint64Array
(aber nichtFloat32Array
nochFloat64Array
). 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
vontypedArray
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
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
- Web Crypto API
Math.random
, eine nicht-kryptographische Quelle von Zufallszahlen.