在这个问题上寻找一些专家建议,我对密码学的了解充其量只是粗略的。
我想知道这是否是生成加密安全随机数的可行解决方案。更具体地说,我想知道使用Math.abs()或Math.sin()来钳位数字会减少我从crypto.getRandomValues得到的数字的随机性,以至于它对加密不再有用。 / p>
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中测试了这个代码段。我不认为IE中存在window.crypto对象。