仅使用nodejs / javascript从私钥pem中提取公钥

时间:2015-02-27 14:50:08

标签: javascript node.js pem

使用nodejs仅限javascript ,如何从私钥pem中提取公钥?

我手中的私钥是PEM格式的私钥;我想提取公钥,以便将其分发给合作者。

我经常使用纯javascript node-forge模块,但尚未发现如何从私钥中提取公钥。

我也知道,目前使用ursa模块来完成此任务;但我想要一个纯javascript 纯nodejs 解决方案(如果有的话)。

2 个答案:

答案 0 :(得分:7)

现代答案NodeJS v11.6.0(2018年12月发布)

您不需要任何外部软件包

https://nodejs.org/api/crypto.html

const crypto = require('crypto')
const fs = require('fs')

// assuming you have a private.key file that begins with '-----BEGIN RSA PRIVATE KEY-----...'
const privateKey = fs.readFileSync('./private.key')

const pubKeyObject = crypto.createPublicKey({
    key: privateKey,
    format: 'pem'
})

const publicKey = pubKeyObject.export({
    format: 'pem',
    type: 'spki'
})

// -----BEGIN PUBLIC KEY-----... 
console.log(publicKey)  

答案 1 :(得分:3)

来自node-forge documentation

pem = '-----PRIVATE KEY ----- [...]'
pki = require('node-forge').pki
privateKey = pki.privateKeyFromPem(pem)
publicKey  = pki.setRsaPublicKey(privateKey.n, privateKey.e)
console.log(pki.publicKeyToPem(publicKey))