Math.random()的加密安全替換方法window.crypto.getRandomValues


Math.random()

返回介於 0(包含) ~ 1(不包含) 之間的一個隨機數。
Math.random()函數不是加密安全的隨機數生成器。

window.crypto.getRandomValues

Crypto.getRandomValues() 方法讓你可以獲取符合密碼學要求的安全的隨機值。傳入參數的數組被隨機值填充(在加密意義上的隨機)。

為了確保足夠的性能,不使用真正的隨機數生成器,但是它們正在使用具有足夠熵值偽隨機數生成器。它所使用的 PRNG 的實現與其他不同,但適用於加密的用途。該實現還需要使用具有足夠熵的種子,如系統級熵源。

語法

cryptoObj.getRandomValues(typedArray);

參數

  typedArray是一個基於整數的  TypedArray,它可以是  Int8ArrayUint8ArrayInt16Array、  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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM