Как заменить Math.random () на crypto.getRandomValues ​​() и сохранить тот же результат? - PullRequest
0 голосов
/ 08 октября 2019

Я использую следующую функцию, чтобы получить определенную случайную строку для передачи ее затем другой функции:

function generateRandomString() {
    return Math.random().toString(36).substring(2, 15) + 
           Math.random().toString(36).substring(2, 15);
}

Я хотел бы использовать crypto.getRandomValues() вместо Math.random(). Как бы я передал Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15); в качестве аргумента crypto.getRandomValues(), или я ошибся?

1 Ответ

2 голосов
/ 08 октября 2019

Вы можете использовать его следующим образом:

function generateRandomString() {
     return (crypto.getRandomValues(new Uint32Array(1))[0] / 4294967295).toString(36).substring(2, 15) + (crypto.getRandomValues(new Uint32Array(1))[0] / 4294967295).toString(36).substring(2, 15);
}

Логика: разделить случайный UInt32 на максимальное значение (2 ^ 32 -1), чтобы получить результат от 0 до 1

Вот ссылка: https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...