JS метод Global.getRandomValues()
Загальний опис
Crypto -> getRandomValues
— це метод API Web Crypto, який генерує криптографічно стійкі випадкові значення. Цей метод використовується для створення випадкових даних, які не піддаються предсказуванню, що робить їх ідеальними для використання в криптографії, безпеці або інших додатках, де важлива стійкість до атак.
Метод getRandomValues
працює з типізованими масивами, такими як Uint8Array
, Uint16Array
, Float32Array
тощо. Він заповнює ці масиви випадковими значеннями. Важливо зазначити, що цей метод забезпечує більшу безпеку порівняно з методами генерації випадкових чисел, як Math.random()
, оскільки використовує криптографічні алгоритми.
Як використовувати getRandomValues
Першим кроком є створення типізованого масиву, в який будуть записані випадкові значення.
Приклад:
let randomValues = new Uint8Array(10); // масив з 10 елементів типу Uint8
Далі ви викликаєте метод
crypto.getRandomValues
, передаючи цей масив як аргумент:Приклад:
crypto.getRandomValues(randomValues); console.log(randomValues);
Після виклику, масив
randomValues
міститиме 10 випадкових цілих чисел від 0 до 255 (дляUint8Array
).
Практичне застосування
Цей метод дуже корисний, коли вам необхідно генерувати випадкові значення для таких задач, як створення одноразових паролів, токенів для аутентифікації або генерація ключів для криптографічних операцій. Оскільки ці числа генеруються за допомогою безпечних криптографічних алгоритмів, вони є набагато більш стійкими до передбачення в порівнянні з іншими стандартними методами генерації випадкових чисел.
Порада: | Якщо вам потрібен масив з випадкових значень певного типу, завжди використовуйте відповідний типізований масив. Наприклад, для 32-бітних чисел використовуйте |
Порада: | Пам'ятайте, що |
Порада: | Генерація випадкових значень для великих обсягів даних може бути дорогим за часом процесом, тому обмежуйте розмір масиву до необхідного мінімуму для ефективності. |
Синтаксис
crypto.getRandomValues(typedArray);
Параметри
Return
array
Метод
crypto.getRandomValues()
не повертає значення напряму як результат виконання, але змінює переданий йому масив. Це означає, що він заповнює переданий масив випадковими значеннями (бінарними, цілими числами), що відповідають зазначеному типу масиву (наприклад,Uint8Array
,Uint16Array
,Uint32Array
).
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
11 |
21 |
5 |
15 |
12 |
Переглядач | ||||
---|---|---|---|---|
37 |
18 |
21 |
5 |
Переглядач | ||
---|---|---|
17.4.0 |
1.0 |
Приклади
Цей приклад дозволяє користувачу взаємодіяти з інтерфейсом для генерації безпечних паролів. Користувач може ввести бажану довжину паролю (від 8 до 32 символів) через текстове поле, після чого натискання кнопки "Згенерувати пароль" запускає процес генерації. За допомогою методу crypto.getRandomValues
створюються випадкові числа, які потім перетворюються в символи з попередньо визначеного набору (великі та малі літери, цифри, спеціальні символи). Це забезпечує створення надійних паролів для користувачів.
Цей приклад показує, як за допомогою методу getRandomValues
можна створити криптографічно стійкий токен. Токен є важливим компонентом для аутентифікації користувачів або захисту даних. Використання криптографічно стійких значень гарантує, що токен не буде передбачуваним, що підвищує безпеку системи.
function generateSecureToken() {
const array = new Uint8Array(16); // створюємо масив для 16 випадкових байт
crypto.getRandomValues(array); // заповнюємо його випадковими значеннями
return array.join(''); // перетворюємо масив в строку
}
const token = generateSecureToken();
console.log(token); // виведе криптографічно стійкий токен
Цей приклад демонструє, як можна використовувати crypto.getRandomValues
для створення випадкових паролів. Використовуючи криптографічно стійкі випадкові значення, ми генеруємо пароль із заданим набором символів. Це дозволяє створити безпечний пароль для користувачів або додатків.
function generateRandomPassword(length) {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+';
const passwordArray = new Uint8Array(length);
crypto.getRandomValues(passwordArray);
let password = '';
passwordArray.forEach(byte => {
password += chars[byte % chars.length]; // вибираємо символи з доступного набору
});
return password;
}
const randomPassword = generateRandomPassword(12); // генеруємо пароль довжиною 12
console.log(randomPassword); // виведе випадковий пароль