You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Node.js生成ECDSA密钥对?是否有原生实现替代sshpk?

Node.js 自 v10.12.0 版本起,内置的 crypto 模块已原生支持生成 ECDSA 密钥对,无需依赖第三方未维护的 sshpk 包。

你可以用下面的代码直接替换原有逻辑:

import { generateKeyPairSync } from 'node:crypto';

// 生成ECDSA密钥对,可按需替换namedCurve参数为你需要的曲线
const { publicKey, privateKey } = generateKeyPairSync('ec', {
  // 常用可选曲线:prime256v1(对应NIST P-256)、secp384r1(P-384)、secp521r1(P-521)
  namedCurve: 'prime256v1',
  // 公钥输出配置,此处输出PEM格式的SPKI标准公钥
  publicKeyEncoding: {
    type: 'spki',
    format: 'pem'
  },
  // 私钥输出配置,此处输出PEM格式的PKCS8标准私钥
  privateKeyEncoding: {
    type: 'pkcs8',
    format: 'pem'
  }
});

如果需要生成和原有 sshpk 输出格式完全一致的密钥,仅需调整对应编码参数即可:比如要输出OpenSSH格式的公钥,可将publicKeyEncoding.type设置为ssh,即可直接得到ecdsa-sha2-nistp256开头的标准SSH公钥字符串。

高并发场景推荐使用异步的generateKeyPair方法,避免阻塞Node.js事件循环:

import { generateKeyPair } from 'node:crypto';

generateKeyPair('ec', {
  namedCurve: 'prime256v1',
  publicKeyEncoding: { type: 'spki', format: 'pem' },
  privateKeyEncoding: { type: 'pkcs8', format: 'pem' }
}, (err, publicKey, privateKey) => {
  if (err) throw err;
  // 业务逻辑处理生成的密钥对
});

内容的提问来源于stack exchange,提问作者Gajus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:45:04