【问题标题】:Extract public key from private key pem using only nodejs/javascript仅使用 nodejs/javascript 从私钥 pem 中提取公钥
【发布时间】:2015-02-27 14:50:08
【问题描述】:

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

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

我经常使用纯javascriptnode-forge模块,但还没有发现如何从私钥中提取公钥。

我也知道,目前使用ursa 模块来完成此操作;但我想要一个 pure javascriptpure nodejs 解决方案(如果有)。

【问题讨论】:

    标签: javascript node.js pem


    【解决方案1】:

    现代答案 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)  
    

    【讨论】:

      【解决方案2】:

      来自节点锻造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))
      

      【讨论】:

      • 很难找到 xD
      • 已确认。谢谢;我不知道我怎么没有找到它——我简直要疯了。这解决了一个烦人的问题——我终于可以从我们的代码中删除ursa了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-13
      • 2021-03-14
      • 1970-01-01
      • 2011-07-31
      • 2016-12-28
      • 2015-09-06
      相关资源
      最近更新 更多