Ища небольшой совет специалиста по этому вопросу, мои знания о криптографии в лучшем случае поверхностны.
Мне интересно, является ли это жизнеспособным решением для генерации криптографически безопасных случайных чисел.Точнее, мне интересно, если использование Math.abs () или Math.sin () для ограничения числа уменьшит случайность числа, получаемого из crypto.getRandomValues, настолько, что оно больше не будет полезно для шифрования.
if(window.crypto && window.crypto.getRandomValues) {
Math.random = () => {
var array = new Uint32Array(1)
window.crypto.getRandomValues(array)
return Math.abs(Math.sin(array[0]))
}
}
console.log(Math.random())
jsfiddle: https://jsfiddle.net/mg7ftm7w/
примечание: я тестировал этот фрагмент только в Chrome.Я не думаю, что объект window.crypto присутствует в IE.