Math.random()
返回介於 0(包含) ~ 1(不包含) 之間的一個隨機數。
Math.random()函數不是加密安全的隨機數生成器。
window.crypto.getRandomValues
Crypto.getRandomValues() 方法讓你可以獲取符合密碼學要求的安全的隨機值。傳入參數的數組被隨機值填充(在加密意義上的隨機)。
為了確保足夠的性能,不使用真正的隨機數生成器,但是它們正在使用具有足夠熵值偽隨機數生成器。它所使用的 PRNG 的實現與其他不同,但適用於加密的用途。該實現還需要使用具有足夠熵的種子,如系統級熵源。
語法
cryptoObj.getRandomValues(typedArray);
參數
typedArray是一個基於整數的
TypedArray,它可以是
Int8Array、
Uint8Array、
Int16Array、
Uint16Array、
Int32Array 或者
Uint32Array。在數組中的所有的元素會被隨機數重寫。(注釋:生成的隨機數儲存在
typedArray 數組上。)
例子
window.crypto.getRandomValues(new Int8Array(2))//Int8Array(2) [44, -3]
window.crypto.getRandomValues(new Uint8Array(2))//Uint8Array(2) [218, 119]
window.crypto.getRandomValues(new Int16Array(2))//Int16Array(2) [24582, -15808]
window.crypto.getRandomValues(new Uint16Array(2))//Uint16Array(2) [55391, 55756]
window.crypto.getRandomValues(new Int32Array(2))//Int32Array(2) [1574608122, -836595554]
window.crypto.getRandomValues(new Uint32Array(2))//Uint32Array(2) [1906545366, 2391348462]
Math.random()的等價表達式:window.crypto.getRandomValues(new Uint8Array(1)) * 0.001
詳見:https://developer.mozilla.org/zh-CN/docs/Web/API/RandomSource/getRandomValues
