我使用 Node.js 作为服务器端语言,我想为在我的网站上注册的任何用户生成一个 RSA 密钥对。我正在使用一个名为keypair的模块。它适用于小尺寸的密钥,但是当我生成大小为 2048 的密钥时,执行它需要很长时间,所以我想使用 Node 的 child_process 直接从 Node.js 使用 Open SSL,如下面的脚本中所述:
var cp = require('child_process')
, assert = require('assert');
var privateKey, publicKey;
publicKey = '';
cp.exec('openssl genrsa 2048', function(err, stdout, stderr) {
assert.ok(!err);
privateKey = stdout;
console.log(privateKey);
makepub = cp.spawn('openssl', ['rsa', '-pubout']);
makepub.on('exit', function(code) {
assert.equal(code, 0);
console.log(publicKey);
});
makepub.stdout.on('data', function(data) {
publicKey += data;
});
makepub.stdout.setEncoding('ascii');
makepub.stdin.write(privateKey);
makepub.stdin.end();
});
这在密钥对生成方面比 Node.js 密钥对模块更有效,所以我遇到的问题是我不理解这段代码(如果它在服务器端写入文件并从中读取密钥? ) 并且我想将此脚本转换为一个函数,该函数返回一个 JSON 或一个数组作为保存公钥和私钥的结果。
所以欢迎任何建议,提前谢谢你。