有没有办法验证给定的私钥是否与给定的公钥匹配?我想用C ++检查它们
答案 0 :(得分: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
答案 1 :(得分:0)
查看http://www.cryptopp.com/,它具有检查密钥对的实用程序。
作为一般规则,私钥应该能够解密使用公钥加密的数据。这证明了给定的密钥对是有效的。