1

特定の秘密鍵が特定の公開鍵と一致することを確認する方法はありますか?C++で確認したい

4

2 に答える 2

2

これは、キーを使用する公開キーアルゴリズム、およびそれらのキーのエンコード方法によって異なります。たとえば、RSA公開鍵は2つのパラメータ「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 に答える