Javascript:生成n位的随机整数

Javascript:生成n位的随机整数,javascript,random,cryptography,Javascript,Random,Cryptography,我想为DH私钥生成一个512位整数。我四处查看了一下,但找不到任何显示生成特定长度的随机int的javascript资源如图所示生成16个随机32UInt怎么样。理论上,如果你想把这些数字都放在一起,你可以这样做: randomNumber = generatedArray.map((partialResult, value) => (partialResult << 32) + value)); 逐字节(或逐字)生成512位,并将其打包成二进制,这不是减少而不是映射?即使这

我想为DH私钥生成一个512位整数。我四处查看了一下,但找不到任何显示生成特定长度的随机int的javascript资源

如图所示生成16个随机32UInt怎么样。理论上,如果你想把这些数字都放在一起,你可以这样做:

randomNumber = generatedArray.map((partialResult, value) => (partialResult << 32) + value));

逐字节(或逐字)生成512位,并将其打包成二进制,这不是
减少
而不是
映射
?即使这样,它也做不到正确的事情,中间值溢出并环绕,因为移位运算符被定义为在32位上工作values@SamMason是的,它应该是
reduce
。谢谢,我不知道32位的限制。我想我可以乘以
2^16
。如果你一开始提到32位UINT,那不是2**32吗?javascript也没有任意精度的数字,所以这比使用Math.random()*2**512
(只有一点点,因为你可能会得到一个CSPRNG)要好一点,但是为什么要生成512位来丢弃除top 54之外的所有数据呢?是的,应该是2**32,谢谢。我刚才指出这个方法实际上是可行的。然而,正如您所提到的,由于Javascript的精度限制,实际上只能使用约54位。
randomNumber = generatedArray.reduce(
    (partialResult, value) => partialResult * Math.pow(2,32) + value)
);