【问题标题】:node-forge how to read a private rsa key from filenode-forge 如何从文件中读取私有 rsa 密钥
【发布时间】:2017-09-16 01:33:27
【问题描述】:

此问题与Issue using RSA encryption in javascript有关

我有一个节点脚本,我试图从文件中读取 PEM RSA 私钥:

const forge = require('node-forge');
const fs = require('fs');
const path = require('path');
let pkey = fs.readFileSync(path.join(__dirname, 'test.key'), 'utf8');
//let pkeyDer = forge.util.decode64(pkey); // since it's not base64 encoded, i suppose don't need to decode
let pkeyAsn1 = forge.asn1.fromDer(pkey);
let privateKey = forge.pki.privateKeyFromAsn1(pkeyAsn1);

test.key 文件的格式如下:

-----BEGIN RSA PRIVATE KEY-----
{mumbo jumbo line1}
{mumbo jumbo line2}
...
-----END RSA PRIVATE KEY-----

当我尝试导入文件时,该行在pkeyAsn1 = forge.asn1.fromDer(pkey); 处失败,出现以下错误: Too few bytes to read ASN.1 value.

我对文件格式不太了解,有人能帮帮我吗?

我生成的私钥文件使用以下 openssl 命令: openssl rsa -in encrypted_test.key -out test.key 我输入了密码来解密这样的 rsa 密钥。

【问题讨论】:

  • @dlongley 你能看一下吗

标签: node.js encryption rsa


【解决方案1】:

将 pkey 读取为字节并使用 forge.pki.privateKeyFromPem。

工作代码:

const forge = require('node-forge');
const fs = require('fs');
const path = require('path');
let pkey = fs.readFileSync(path.join(__dirname, 'test.key'));
let privateKey = forge.pki.privateKeyFromPem(pkey);

【讨论】:

    【解决方案2】:

    我想我明白了。读取私钥文件时,必须包含---BEGIN RSA PRIVATE KEY------END RSA PRIVATE KEY--- 横幅。

    【讨论】:

    • 我面临同样的问题。我的文件也有你提到的横幅。可能出了什么问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2020-12-19
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多