试图在浏览器中改进Math.random()

时间:2018-04-25 18:16:36

标签: javascript security encryption cryptography

在这个问题上寻找一些专家建议,我对密码学的了解充其量只是粗略的。

我想知道这是否是生成加密安全随机数的可行解决方案。更具体地说,我想知道使用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对象。

0 个答案:

没有答案