以下是https://www.google-analytics.com/analytics.js
的代码var a = new Uint32Array(1);
window.crypto.getRandomValues(a);
return a[0] & 2147483647;
据我所知,a positive value & 2147483647
将永远存在。如果有必要,我可以推断出crypto.getRandomValues
会返回负值吗?我无法从MDN中找到它。
答案 0 :(得分:1)
Web Cryptography API draft州(强调我的):
如果数组不是整数类型(即
Int8Array
,Uint8Array
,Int16Array
,Uint16Array
,Int32Array
,或者Uint32Array
),抛出一个TypeMismatchError并终止算法。如果数组的byteLength大于65536,则抛出QuotaExceededError并终止算法。
- 醇>
使用适当类型的加密随机值覆盖数组的所有元素。
换句话说:如果您传递Int*
数组作为参数,则可以预期负值。如果你不想要那些,请使用Uint*
(你已经在做了,所以你可以期待a[0]
为正)。