Crypto: метод getRandomValues()
Базовая Широко доступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Примечание: Эта функция доступна в Потоках выполнения.
Метод Crypto.getRandomValues() позволяет получить криптографически сильные случайные значения. Переданный в качестве параметра массив заполняется случайными числами (случайными в криптографическом смысле).
Для обеспечения достаточной производительности реализации не используют генератор истинно случайных чисел, а используют псевдослучайный генератор, инициализированный значением с достаточной энтропией. Алгоритм псевдослучайного генератора (PRNG) может отличаться в зависимости от браузера, но подходит для криптографических целей.
getRandomValues() является единственным членом интерфейса Crypto , который может быть использован из небезопасного контекста.
Синтаксис
getRandomValues(typedArray)
Параметры
typedArray-
Массив на основе целых чисел
TypedArray, который является одним из:Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,BigInt64Array,BigUint64Array(но неFloat32ArrayниFloat64Array). Все элементы массива будут перезаписаны случайными числами.
Возвращаемое значение
Тот же массив, что и typedArray, но с его содержимым, заменённым на новые сгенерированные случайные числа. Обратите внимание, что typedArray изменяется на месте, и не создаётся копия.
Исключения
-
QuotaExceededErrorDOMException -
Выбрасывается, если
byteLengthtypedArrayпревышает 65 536.
Примечания к использованию
Для генерации ключей предпочтительнее использовать метод generateKey(), который гарантированно выполняется в безопасном контексте.
Спецификация Web Cryptography не требует минимального уровня энтропии. Вместо этого, браузеры должны обеспечить наилучшую энтропию при генерации случайных чисел, используя хорошо определенный, эффективный псевдослучайный генератор, встроенный в сам браузер, но инициализированный значениями из внешнего источника псевдослучайных чисел, такого как платформа-специфическая функция генерации случайных чисел, устройство Unix /dev/urandom, или другой источник случайных или псевдослучайных данных.
Примеры
const array = new Uint32Array(10);
self.crypto.getRandomValues(array);
console.log("Your lucky numbers:");
for (const num of array) {
console.log(num);
}
Спецификации
| Спецификация |
|---|
| Web Cryptography API # Crypto-method-getRandomValues |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
getRandomValues |
11 | 12 | 21 | 15 | 5 | 18 | 21 | 14 | 5 | 1.0 | ≤37 |
См. также
- API криптографии веб-браузера
-
Math.random, некриптографический источник случайных чисел.
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues