Crypto.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.
El método Crypto.getRandomValues()
permite obtener valores aleatorios criptográficamente fuertes.
El arreglo dado como parámetro se rellena con números aleatorios (aleatorios en su significado criptográfico).
Para garantizar un rendimiento suficiente, las implementaciones no utilizan un verdadero generador de números aleatorios, sino un generador de números pseudoaleatorios sembrado con un valor con suficiente entropía. El algoritmo del generador de números pseudoaleatorios (PRNG, por sus siglas en Inglés) puede variar entre user agents, pero es adecuado para fines criptográficos.
getRandomValues()
es el único miembro de la interfaz Crypto
que puede utilizarse desde un contexto inseguro.
Sintaxis
getRandomValues(typedArray)
Parametros
typedArray
-
Un
TypedArray
de enteros, que puede ser uno de los siguientes:Int8Array
,Uint8Array
,Uint8ClampedArray
,Int16Array
,Uint16Array
,Int32Array
,Uint32Array
,BigInt64Array
,BigUint64Array
(pero noFloat32Array
niFloat64Array
). Todos los elementos de la matriz se sobrescribirán con números aleatorios.
Valor devuelto
El mismo array pasado como typedArray
pero con su contenido reemplazado por los nuevos números aleatorios generados.
Tenga en cuenta que se modifica el typedArray
original y no se realiza ninguna copia.
Excepciones
QuotaExceededError
DOMException
-
Se produce si
byteLength
detypedArray
supera 65,536.
Notas de uso
No utilice getRandomValues()
para generar claves de cifrado.
En su lugar, utilice el método generateKey()
.
Hay algunas razones para ello; por ejemplo, no se garantiza que getRandomValues()
se ejecute en un contexto seguro.
No existe un grado mínimo de entropía exigido por la especificación Web Cryptography.
En su lugar, se pide a los User Agents a que proporcionen la mejor entropía que puedan al generar números aleatorios, utilizando un generador de números pseudoaleatorios bien definido y eficiente integrado en el propio User Agent, pero sembrado con valores tomados de una fuente externa de números pseudoaleatorios, como una función de números aleatorios específica de la plataforma, el dispositivo /dev/urandom
de Unix u otra fuente de datos aleatorios o pseudoaleatorios.
Ejemplos
const array = new Uint32Array(10);
self.crypto.getRandomValues(array);
console.log("Sus números de la suerte:");
for (const num of array) {
console.log(num);
}
Especificaciones
Specification |
---|
Web Cryptography API # Crypto-method-getRandomValues |
Compatibilidad con navegadores
BCD tables only load in the browser
Véase también
- API Web Crypto
crypto
para obtener un objetoCrypto
.Math.random
, una fuente no criptográfica de números aleatorios.