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

如何在JavaScript(Angular)中获取证书的modulus以验证密钥证书匹配?

从私钥/公钥和证书中提取Modulus以验证密钥匹配(基于node-forge)

我需要从公钥和证书中提取Modulus,用来在签名前验证密钥与证书是否匹配,但一直没能实现。我正在开发Angular Web应用,使用node-forge工具包,现有代码片段如下,但不知道如何获取Modulus:

var buffer = forge.util.createBuffer(FirmaUtil.Key, 'raw');
var asn1 = forge.asn1.fromDer(buffer);
var info = forge.pki.decryptPrivateKeyInfo(asn1, 'password');
var privateK = forge.pki.privateKeyFromAsn1(info);

解决方案

从私钥提取Modulus

你的代码已经成功解析出RSA私钥对象privateK,直接访问其n属性即可得到Modulus(类型为forge的BigInteger),可以转成十六进制字符串方便后续对比:

// 提取私钥Modulus并转为十六进制
const privateModulus = privateK.n.toString(16);

从公钥提取Modulus

如果是PEM格式的公钥,先解析再提取:

// 解析PEM公钥
const publicKey = forge.pki.publicKeyFromPem(publicKeyPem);
// 提取公钥Modulus
const publicModulus = publicKey.n.toString(16);

从证书提取Modulus

对于X.509证书,先解析证书对象,再从证书包含的公钥中提取Modulus:

// 解析PEM格式证书
const cert = forge.pki.certificateFromPem(certPem);
// 提取证书中公钥的Modulus
const certModulus = cert.publicKey.n.toString(16);

验证密钥与证书匹配

对比私钥、公钥、证书的Modulus字符串是否一致,即可确认匹配性:

if(privateModulus === publicModulus && publicModulus === certModulus) {
  console.log('密钥与证书匹配');
} else {
  console.log('密钥与证书不匹配');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:25:14