如何生成随机素数?

Ign*_*ulo 2 javascript random primes node.js node-crypto

我目前正在从事一个涉及密码学的 JavaScript 团队项目。

我希望我的程序尽可能安全,如果可能的话达到行业级安全,因此我一直在寻找社区批准的随机大素数生成算法的实现。

我探索了 Node.js Crypto,但没有找到返回随机大概率素数的简单函数。

如何使用 Node.js Crypto 来解决这个问题?

ant*_*nku 6

从 v15.8.0 开始,Node.js 内置crypto模块提供了generatePrimegeneratePrimeSync方法。

例如,要生成 16 位素数,请使用:

const crypto = require('crypto');

let prime = crypto.generatePrimeSync(16, {bigint: true}); // 49597n
Run Code Online (Sandbox Code Playgroud)

由于计算大素数可能需要时间,因此还有一个带有回调的异步选项:

const crypto = require('crypto');

crypto.generatePrime(16, {bigint: true}, (err, prime) => {
    console.log(prime); // 60757n
});
Run Code Online (Sandbox Code Playgroud)

注意:该bigint选项用于返回 abigint而不是 anArrayBuffer