2

秘密鍵、公開鍵、x509 Pem ファイルがあります。これらのファイルからRSA公開鍵の情報を取得したいです。

以下のシェルスクリプトで確認できます。$ openssl x509 -cert.pem -テキスト内

...

    Subject Public Key Info:
        Public Key Algorithm: rsaEncryption
        RSA Public Key: (2048 bit)
            Modulus (2048 bit):
                00:e1:92:dc:05:84:c7:e1:2d:db:f3:48:84:90:32:
                ...
                da:7d:2f:95:d2:ab:28:6e:6c:be:0a:af:e0:cb:24:
                18:db
            Exponent: 65537 (0x10001)

...

PHP OpenSSL ライブラリの Modulus と Exponent の値も同様に取得できますか?

4

3 に答える 3

6

次のことを試すことができます。

$key = file_get_contents("root/to/private_key.pem");
$data = openssl_pkey_get_private($key);
$data = openssl_pkey_get_details($data);

$key = $data['key'];
$modulus = $data['rsa']['n'];
$exponent = $data['rsa']['e'];

echo "Modulus: $modulus <br>Exponent: $exponent";

エコーし $exponentても画面に何も表示されない場合は、 var_dump($exponent)orvar_dump($data)を試すと、奇妙な文字が表示されます。

于 2015-01-04T07:04:13.997 に答える
1

純粋な PHP X.509 実装である phpseclibを使用します。

$x509 = new File_X509();
$cert = $x509->loadX509('-----BEGIN CERTIFICATE-----
MIIDITCCAoqgAwIBAgIQT52W2WawmStUwpV8tBV9TTANBgkqhkiG9w0BAQUFADBM
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0xMTEwMjYwMDAwMDBaFw0x
MzA5MzAyMzU5NTlaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRcw
FQYDVQQDFA53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
gYEA3rcmQ6aZhc04pxUJuc8PycNVjIjujI0oJyRLKl6g2Bb6YRhLz21ggNM1QDJy
wI8S2OVOj7my9tkVXlqGMaO6hqpryNlxjMzNJxMenUJdOPanrO/6YvMYgdQkRn8B
d3zGKokUmbuYOR2oGfs5AER9G5RqeC1prcB6LPrQ2iASmNMCAwEAAaOB5zCB5DAM
BgNVHRMBAf8EAjAAMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwudGhhd3Rl
LmNvbS9UaGF3dGVTR0NDQS5jcmwwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUF
BwMCBglghkgBhvhCBAEwcgYIKwYBBQUHAQEEZjBkMCIGCCsGAQUFBzABhhZodHRw
Oi8vb2NzcC50aGF3dGUuY29tMD4GCCsGAQUFBzAChjJodHRwOi8vd3d3LnRoYXd0
ZS5jb20vcmVwb3NpdG9yeS9UaGF3dGVfU0dDX0NBLmNydDANBgkqhkiG9w0BAQUF
AAOBgQAhrNWuyjSJWsKrUtKyNGadeqvu5nzVfsJcKLt0AMkQH0IT/GmKHiSgAgDp
ulvKGQSy068Bsn5fFNum21K5mvMSf3yinDtvmX3qUA12IxL/92ZzKbeVCq3Yi7Le
IOkKcGQRCMha8X2e7GmlpdWC1ycenlbN0nbVeSv3JUMcafC4+Q==
-----END CERTIFICATE-----');

$pubkey = $x509->getPublicKey();
$parts = $pubkey->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_RAW);
echo $parts['e'] . "\r\n\r\n" . $parts['n'];
于 2012-07-31T13:58:33.453 に答える
0

あなたはおそらくしたいですopenssl_pkey_get_details($key)

openssl_pkey_get_private()これは、またはopenssl_pkey_get_public()(?)から生成されたキー リソースを取得し、キーbitskey、 、およびキーに応じて、、 またはのいずれかtypeである 4 番目のキーを含む配列を返します。4 番目のキーは、より詳細な別の配列にマップされます。RSA キーの場合、このサブ配列にはモジュラスと指数が含まれます。rsadsadhne

その他の使用上の注意については、このページと PHP ドキュメントの関連ページを参照してください。

(これはテストされていません。これがうまくいくかどうか教えてください!)

于 2012-07-27T04:00:37.873 に答える