crypto.getRandomValues会返回负值吗?

时间:2016-05-23 09:57:25

标签: javascript

以下是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中找到它。

1 个答案:

答案 0 :(得分:1)

Web Cryptography API draft州(强调我的):

  
      
  1. 如果数组不是整数类型(即Int8ArrayUint8ArrayInt16ArrayUint16ArrayInt32Array,或者   Uint32Array),抛出一个TypeMismatchError并终止算法。

  2.   
  3. 如果数组的byteLength大于65536,则抛出QuotaExceededError并终止算法。

  4.   
  5. 使用适当类型的加密随机值覆盖数组的所有元素

  6.   

换句话说:如果您传递Int*数组作为参数,则可以预期负值。如果你不想要那些,请使用Uint*(你已经在做了,所以你可以期待a[0]为正)。