crypto.getRandomValues în JavaScript

Fișiere și criptografie Toate browserele moderne, Node.js 17+

Umple un typed array cu numere aleatorii sigure criptografic (pentru parole, tokenuri, chei).

Sintaxă
crypto.getRandomValues(typedArray)

Ce face crypto.getRandomValues

Math.random() este suficient pentru jocuri, dar nu pentru securitate: valorile pot fi ghicite. crypto.getRandomValues umple un typed array întreg (Uint8Array, Uint32Array etc.) cu valori aleatorii de calitate criptografică și îl returnează.

Poate genera cel mult 65.536 de octeți la un apel.

Parametri

Parametru Descriere
typedArray Un typed array întreg, de exemplu new Uint8Array(16).

Ce returnează

Același typed array, umplut.

Exemple

Exemplul 1: Un token și o parolă aleatorie

const token = crypto.getRandomValues(new Uint8Array(16));
console.log(token.toHex());

const litere = "abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789";
const parola = Array.from(crypto.getRandomValues(new Uint32Array(12)), (n) => litere[n % litere.length]).join("");
console.log(parola);

Rezultat posibil (diferă la fiecare rulare)

3f9a1c07be52d8e46a0f2b7c91d3e5a8
k7QmZ2rTx9Pd

Greșeli frecvente

  • Dai un Float64Array și primești TypeMismatchError. Sunt acceptate doar tablourile de întregi.

Comenzi înrudite

  • crypto.randomUUID: Generează un identificator unic aleatoriu (UUID versiunea 4), de forma 36b8f84d-df4e-4d49-b662-bcde71a8764f.
  • Math.random: Returnează un număr aleatoriu între 0 (inclusiv) și 1 (exclusiv).
  • Typed arrays (Uint8Array, Float64Array...): Tablouri de lungime fixă cu numere de un singur tip, pentru date binare: imagini, fișiere, audio, rețea.