如何验证密钥对是否匹配? (节点伪造)

How do I verify a key pair matches? (node-forge)

我需要确保客户端生成的 RSA 密钥对在签名之前匹配。我似乎找不到有关如何执行此操作的任何文档 (npm:node-forge)。我猜我可以用它签名,然后验证签名,但效率不高。我目前有这个:

const Forge = require("node-forge");

try {
    publicKey = Forge.pki.publicKeyFromPem(publicKey);
    privateKey = Forge.pki.privateKeyFromPem(privateKey);
} catch(err) {
    // ...
}

// ...

欢迎任何想法。

我找到了答案:我不需要首先发送 public 密钥。您可以像这样从私钥构建 public 密钥:

// const privateKey = ...;
const publicKey = Forge.pki.setRsaPublicKey(privateKey.n, privateKey.e);

可在此处找到有关此解决方案的更多信息: