PHP - openssl_pkey_get_public() 函式



定義和用法

openssl_pkey_get_public() 函式將返回公鑰。

描述

openssl_pkey_get_public() 函式從給定的證書中返回公鑰,以便與其他函式一起使用。

語法

openssl_pkey_get_public ( mixed $certificate ) : resource

引數

序號 引數 描述
1

證書

您可以使用以下證書:

1. X.509 證書資源

2. 檔案中的公鑰,格式為 file://path/to/file.pem。

3. PEM 格式的公鑰。

返回值

如果 PHP openssl_pkey_get_public() 函式沒有錯誤,則返回一個正的資源識別符號。如果失敗,則返回 false。

PHP 版本

此函式適用於 PHP 5.0.0 以上版本。

示例 1

openssl_pkey_get_public() 與 X.509 證書配合使用:

<?php
   $dn = array(
      "countryName" => "IN",
      "stateOrProvinceName" => "Karnataka",
      "localityName" => "test1",
      "organizationName" => "test2",
      "organizationalUnitName" => "test3",
      "commonName" => "www.test.com",
      "emailAddress" => "xyz@test.com"
   );

   // Generate a new private /public key pair
   $privkey = openssl_pkey_new();

   // Generate a certificate
   $csr = openssl_csr_new($dn, $privkey, array('digest_alg' => 'sha256'));
   $res_cert = openssl_csr_sign($csr, null, $privkey, 365);
   openssl_x509_export($res_cert, $x_509_certificate);
   echo $res_pubkey = openssl_pkey_get_public($x_509_certificate);
?>

這將產生以下結果:

Resource id #5

示例 2

使用 .pem 檔案的 openssl_pkey_get_public():

<?php
   $dn = array(
      "countryName" => "IN",
      "stateOrProvinceName" => "Karnataka",
      "localityName" => "test1",
      "organizationName" => "test2",
      "organizationalUnitName" => "test3",
      "commonName" => "www.test.com",
      "emailAddress" => "xyz@test.com"
   );

   // Generate a new private /public key pair
   $privkey = openssl_pkey_new();

   // Generate a certificate
   $csr = openssl_csr_new($dn, $privkey, array('digest_alg' => 'sha256'));
   $res_cert = openssl_csr_sign($csr, null, $privkey, 365);
   openssl_x509_export_to_file($res_cert, 'C:/xampp/htdocs/modules/openssl/x_509.pem');
   echo $res_pubkey = openssl_pkey_get_public(file_get_contents('C:/xampp/htdocs/modules/openssl/x_509.pem'));
?>

這將產生以下結果:

Resource id #7
php_function_reference.htm
廣告