RandomSource.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.

Метод RandomSource.getRandomValues() позволяет вам получать криптографически стойкие числа. Массив, переданный как параметр, заполняется случайными числами (случайными в криптографическом смысле).

Для того, чтобы гарантировать достаточную производительность, реализации используют не настоящий генератор случайных чисел (RNG, en - Random Number Generator), а генератор псевдо-случайных чисел, которому предоставлено начальное зерно (wiki - https://en.wikipedia.org/wiki/Random_seed) с достаточной энтропией (http://cryptography.ru/ref/энтропия). Реализация генератора псевдо-случайных чисел (PRNG, en - PseudoRandom Number Generator) отличается от других реализаций RNG, но она больше подходит для использования в криптографии. Реализации также требуют использование начального зерна с достаточной энтропией, как источник системно-уровневой энтропии.

Синтаксис

cryptoObj.getRandomValues(typedArray);

Параметры

typedArray

Целочисленный массив TypedArray, например Int8Array, Uint8Array, Uint16Array, Int32Array, или Uint32Array. Все элементы массива замещаются случайными числами.

Исключения

  • Исключение QuotaExceededError DOMException выбрасывается если запрошенная длина больше чем 65536 байт.

Пример

js
/* Предполагается что функция window.crypto.getRandomValues доступна */

var array = new Uint32Array(10);
window.crypto.getRandomValues(array);

console.log("Ваше счастливое число:");
for (var i = 0; i < array.length; i++) {
  console.log(array[i]);
}

Спецификации

Specification
Web Cryptography API
# Crypto-method-getRandomValues

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

  • Window.crypto чтобы получить объект Crypto.
  • Math.random, не криптографический способ получения случайных чисел.