Эта статья нуждается в техническом обзоре. Как вы можете помочь.
Метод RandomSource.getRandomValues()
позволяет вам получать криптографически стойкие числа. Массив, переданный как параметр, заполняется случайными числами (случайными в криптографическом смысле).
Для того, чтобы гарантировать достаточную производительность, реализации используют не настоящий генератор случайных чисел (RNG, en - Random Number Generator), а генератор псевдо-случайных чисел, которому предоставлено начальное зерно (wiki - https://en.wikipedia.org/wiki/Random_seed) с достаточной энтропией (https://cryptography.ru/ref/энтропия). Реализация генератора псевдо-случайных чисел (PRNG, en - PseudoRandom Number Generator) отличается от других реализаций RNG, но она больше подходит для использования в криптографии. Реализации также требуют использование начального зерна с достаточной энтропией, как источник системно-уровневой энтропии.
Синтаксис
cryptoObj.getRandomValues(typedArray);
Параметры
- typedArray
- это целочисленный массив
TypedArray
, напримерInt8Array
,Uint8Array
,Uint16Array
,Int32Array
, илиUint32Array
. Все элементы массива замещаются случайными числами.
Исключения
- Исключение
QuotaExceededError
DOMException
выбрасывается если запрошенная длина больше чем 65536 байт.
Пример
/* предполагается что функция window.crypto.getRandomValues доступна */ var array = new Uint32Array(10); window.crypto.getRandomValues(array); console.log("Your lucky numbers:"); for (var i = 0; i < array.length; i++) { console.log(array[i]); }
Спецификация
Спецификация | Статус | Комментарий |
---|---|---|
Web Cryptography API | Кандидат в рекомендации | Initial definition |
Совместимость с браузерами
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 11.0 WebKit bug 22049 | 21.0 | 11.0 | 15.0 | 3.1 |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | Нет | 23.0 | 21.0 | 11.0 | Нет | 6 |
Смотри также
Window.crypto
чтобы получить объектCrypto
.Math.random
, не криптографический способ получения случайных чисел.