PHP - php_function_openssl_pkey_get_private() 函数



定义和用法

openssl_pkey_get_private() 函数将返回私钥。

描述

函数 openssl_pkey_get_private() 从给定的公钥/私钥返回私钥。例如,来自 .pem 文件的内容。

语法

openssl_pkey_get_private ( mixed $key [, string $passphrase = "" ] ) : resource

参数

序号 参数 描述
1

key

您可以从 .pem 文件中获取密钥,或使用 openssl_pkey_new() 生成的私钥。

2

passphrase

如果您使用的密钥已加密,则必须指定密码。

返回值

如果 PHP openssl_pkey_get_private() 函数没有错误,则返回一个资源标识符。如果密钥生成失败,则返回 false。

PHP 版本

此函数适用于 PHP 5.0.0 及更高版本。

示例 1

openssl_pkey_get_private() 的工作原理

<?php
   // Generate a new private (and public) key pair
   $privkey = openssl_pkey_new();
   openssl_pkey_export($privkey, $yourprivatekey);
   $testprivatekey = openssl_pkey_get_private($yourprivatekey);
   if ($testprivatekey === false) {
      var_dump(openssl_error_string());
   } else {
      var_dump($testprivatekey);
   }
?>

这将产生以下结果

resource(3) of type (OpenSSL key)

示例 2

openssl_pkey_get_private() 和 openssl_pkey_get_details() 的工作原理 -

<?php
   $privkey = openssl_pkey_new();
   openssl_pkey_export($privkey, $yourprivatekey);
   $testprivatekey = openssl_pkey_get_private($yourprivatekey);
   if ($testprivatekey === false) {
      var_dump(openssl_error_string());
   } else {
      //var_dump($testprivatekey);
      $key_details = openssl_pkey_get_details($testprivatekey);
      print_r($key_details);	
   }
?>

这将产生以下结果

Array
(
   [bits] => 2048
   [key] => -----BEGIN PUBLIC KEY-----
   MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnO1F0Gt03mgxLcDpRxlm
   VEh8sfIfan5o11EcoLaEwaTyKgMNm7A4Rs9LcG3fwkNjXo8XNRQv6OSrhl8y00AX
   +cPUb78Qp/K3INmyXr8UUVWy0BT+Rxq5kez1TmZhpITxUYLScEL8DPcghFyfstRa
   5hP8hc0cwYM6N4ieOlXIxrdmbzTn92MeyiTstTvHxt8aGKbSdpmksWyNeqke22kM
   9pBfEsf98XFh5HoQBQaQF6GXL5y00PWIdki7DTzYtXXPRGcQl/53M5HrGGdP0kGS
   uD4YOFXRWYtQR1ZYLa4Ej+BP0eOpfxXiME0aaH1/2iWqyi+bsvkdgFbu92j5ptsr
   yQIDAQAB
-----END PUBLIC KEY-----

   [rsa] => Array
   (
      [n] => ��E�kt�h1-��GfTH|��j~h�Q��*
      ��8F�Kpm��Cc^�5/�䫆_2�@��o��� ٲ^�QU���G��Nfa��Q��pB�� �\��Z�����:7��:U�Ʒfo4��c�$�;����v��l�z��i��_��qa�z���/��vH�
      <صu�Dg��w3��gO�A��>8U�Y�PGVX-�O���0Mh}�%��/���V��h��+�
         [e] => 
         [d] => MK��C|��Y5��5}Z�R0;�S�I�V����M��0�Lw�r��R��|��C��d�W�}�#��v�[9iZI��1��&!��A�;8K�%}��`@
         ������}��n	b�]K�L#�~Sg�' 81!��2R]������`�vl�&�Z�@-q��7u�#����.��d�����]�*Z-�'�|�ܳ ?M
         j���Å
         [p] => �*&5IXM�U�$u�'��d,�$x��iR�1�ᙯ��A�Cxi`%�FR�5�
         ��!�a��C��֧t�^�� ��f�$��V�+�ү��]v"�+=��I�w��RN��<�P�e��
          3-�"��^���|_�-�l��lD,���=�26�ۗXGg5�@}q��T.�j��A��#��m,>#YN}��,pk}g
          [dmp1] => ��
          �l5o�5L�����ޅh)I�+��D�n�J!��ycP��1
          =u>&��h-HT���K��j;�um
          �oO\�e��.��
          X�%s��ڕ_�|Za3��z$�\n1�N1�u�j)��z�
          [dmq1] => ��n[������ǣ<��t��^��P��)�F@ni��
          �gHꥴ(��@#s�!+$�D��]����{��I㯽l��[$��>i	q|�$�Gء�I'R��^c
          "����e"k
          [iqmp] => �Ŗij�	��a6�W#�:��#bS?�Ó��S�r#�C�ױ87])4��Z��`��ݻ��w��.�a�y��@	�ѓ�p���s�XP.{�o9h�Bq��뵘�EU��n ��&S��tE�
       )
      [type] => 0
   )

示例 3

带有密码的 openssl_pkey_get_private() 的工作原理

<?php
   $privkey = openssl_pkey_new();
   openssl_pkey_export($privkey, $testkey, 'helloworld');
   $testprivatekey = openssl_pkey_get_private($testkey, 'helloworld');
   if ($testprivatekey === false) {
      var_dump(openssl_error_string());
   } else {
      //var_dump($testprivatekey);
      $key_details = openssl_pkey_get_details($testprivatekey);
      print_r($key_details);	
   }
?>

这将产生以下结果

Array
(
   [bits] => 2048
   [key] => -----BEGIN PUBLIC KEY-----
   MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs4HV+NM9dQ1ssuxb9PhM
   64Yn8RHgv7YKK33nZudmk6SCOr9yRo7immp+bkaA0Lt/9ONJP+UF5VCltpdNdHLb
   GDTo+TkK5NdTJDalON3L9EhB4cJeQaQQh59uJGf39Et0BJiYiINXsNdlc/pig1/Z
   XDRyhEtqQ6nZJkOIIWO0gpdj9xj2naq/wy6Oas4p3/A7EvN5nB22xfEVIptKUZzi
   YWV4Bs5y2OM3GRwVv+jLYKQ49S/ZKq7MpdCxcXC6YxyrlEIz4PL9cWRtybK3BINv
   JnCWrfWRhUtlAY/CvfXrq2PhXwHVcebsDOPob6A71TcZMirxFZVyqkC+4rGX+5be
   PwIDAQAB
-----END PUBLIC KEY-----

   [rsa] => Array
      (
         [n] => ��=u
         l��[��L�'�࿶
         +}�f�f��:�rF��j~nF��I?��P��Mtr�4��9
         ��S$6�8��HA��^A���n$g��Kt��W��es�b�_�\4r�KjC��&C�!c��c���.�j�)��;�y���"�JQ��aex�r��7��`�8�/�*�̥бqp�c��B3��qdmɲ��o&p��Ke�½��c�_�q����o�;�72*��r�@�ⱗ��?
            [e] => 
            [d] => ��e��e�$%
         sဩQ��EUA�D��Bu��34$�v�#��P�\��uD��(�z�w+�z��aͲ5���X���q�Pŵڡ��%O+3��]+o�3�FM�*�Z^L��k�/�Ty��/��;�)�sB�Np�5�@�x�,8�z2�#�SyM�o�Xċ.��;��K�� ��ڊ��qsLLD
         ^��"j��*=Io{��7`a��{�l�ᛅ�B����#���\�
            [p] => ׳��à�tY�@��[N��n�p�Ƌ��f�	��?7/\��y�i�w�X�P�5�@��s BD�C⎓�| �*���JH��/��|`��+�3��]��oc?�fI�Ze�`�C�>U��|�"��ڊ:U��^��L��g�	�u|@z��F%6�X/�
        ��Ú��+�_�Yh:��59}�D�&כ��Gc
           [dmp1] => i�*/
           �U�̯�6��
           ��|�>3�HP�hN��.�G���9��cxj*�!��0�ؼ��R��:�9E(�Z��$�&�&7>�9.Ih��E�z/�,�QR�"�'�;��^��xq
           [dmq1] => |�w��`��䛌��
           ��3��b���AZ�t��.8���Q]��F�iI��2)�{<��G^ܵt��u�Mb��4I�YL�E�S�8a!�6��&Q�(�^����É��
        [iqmp] => \p5��N��
        $WC�j�� �|�{>d����Y
        f��9�3�$rF(ON��>�� ����%��`(�
           &�op� �}=C+��b�˝�#�G"�0T.���G`t�܈��^��\7
        )
        [type] => 0
   )

示例 4

使用 .pem 文件的 openssl_pkey_get_private() 的工作原理

<?php
   //creating private key
   $privkey = openssl_pkey_new();
   openssl_pkey_export_to_file($privkey, 'C:/xampp/htdocs/modules/openssl/fortesting.pem');
	
   //using .pem file with private key.
   $testprivatekey = openssl_pkey_get_private(file_get_contents('C:/xampp/htdocs/modules/openssl/fortesting.pem'));
   if ($testprivatekey === false) {
      var_dump(openssl_error_string());
   } else {
      //var_dump($testprivatekey);
      $key_details = openssl_pkey_get_details($testprivatekey);
      print_r($key_details);	
   }
?>

这将产生以下结果

Array
(
    [bits] => 2048
    [key] => -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqaka1+sKh3D4HgIDzER6
vr/DI5u6h1QF6Xm1q/nOduTn0vlx4bLv+QEbcElXV1Bss4W7wOZRkMIOwj4xcT+e
PGKaN95JUyxC/NQ13+F6K5yUk0ish36BVusrHt0wdZj28f63gHm824D0yDnn+aJr
s+vSuMppErUD/i0QUFnO86ypHi/zeb+QBEif4a82RtfwRIVUtE/Sxy08ct+1ogA9
pdBd47elLmcekz/dtSUqpUjLj5SNojS7AJCZ5LNxnLOzN3ryCQXGaAn8KHQ284Xs
jlYBjSjXFLY/1fLDYDpQGOApoBj2vK9Io8MxFU3uss79Ezb6LwKZG6CmzlbldBrJ
YQIDAQAB
-----END PUBLIC KEY-----

    [rsa] => Array
        (
            [n] => ����
�p��Dz�#��T�y��v��q��pIWWPl��Q���>1q?� 
            [d] => �9:���Y��"��*xu�&��gt�� &"��{
				��!Px�Ÿr�hn#��!c%�u
�ʻ�꛷x��7z��&��|��ǔv�Ĩѳ�XT?΅��[w"�=e��m�1R_JH�/�hX��.�E���&&'�:�/:��.I�zdx@�6��)��i��1L�z��"X��>��]�t����Rh��g��!8�Y9�G�rŜ��9z���z��~�����jo_��
            [p] => ٥���+�iy��Ѷm:#`BF��Bj>����f�2W%�eIAn� ����۪.o�	v�`tgg��a�L�%ٱ�
L[��\6��`��sx]�~�bU�fF�/Oy�6�+~v��7u�
            [q] => ǎ�Ͱ�u(�.L��l��o�Gc�x��@4��r� `i�i�X��v��'�33X��c��_׏��m8��M���5#t"��^�{�j	vSLi�X��mhԷI܀8�
1t�
            [dmp1] => ���6�$5�Eg�Q�1F"��8y��V`��\��A�{��0�
��ym�6�dUI<�8�f��\��"K�Khja5�z
�w�'�m�F9�nv�rϑFP]��i�%��߿L�1�m'�Y��4
@lth7�
            [dmq1] => il5w*�eG�~��z�2�{��*�"Ӟ���`�����y�r����%@�lq���De��U�z��
�s.��[
��G�l_äh���8¢H4N�7$�25ң?�L�
            [iqmp] => 9"l@Ǚ�O�[I)}��K�6A/f5S�	���\�u��>��C�׏�� �z��]�B�-ry/��D��w��H|�g:��8���s̙��◻(�B�Eo�` 0
)
php_function_reference.htm
广告