1

有没有办法验证给定的私钥与给定的公钥匹配?我想用 C++ 检查它们

4

2 回答 2

2

这取决于使用密钥的公钥算法,以及这些密钥的编码方式。例如,RSA 公钥由两个参数“n”和“e”组成,而私钥由这些参数加上“d”组成,可能还有“p”和“q”。所有这些参数都是大整数,通常使用一些大整数库的内部形式来表示。因此,要比较公钥和私钥,您只需要检查“n”和“e”是否匹配。根据使用的库和系统,您甚至可以忽略“e”,因为它可能是一个常数。

使用可能类似于以下内容的 OpenSSL:

RSA *pubkey = PEM_read_RSA_PUBKEY(...);
RSA *privkey = PEM_read_RSAPrivateKey(...);

if (!BN_cmp(pubkey->n, privkey->n)) {
    // same modulus, so the keys match
于 2012-07-25T18:45:06.893 回答
0

查看http://www.cryptopp.com/,它具有检查密钥对的实用程序。

作为一般规则,私钥应该能够解密使用公钥加密的数据。这证明给定的密钥对是有效的。

于 2012-07-25T14:09:14.147 回答