PHP - Fonction openssl_pkey_new ()

Définition et utilisation

le openssl_pkey_new() La fonction retournera l'identificateur de ressource qui a une nouvelle paire de clés privée et publique.

La description

La fonction openssl_pkey_new () renvoie un identifiant de ressource. Vous pouvez utiliser la fonction openssl_pkey_get_details () pour obtenir tous les détails de la clé générée. La clé (paire publique / privée) est utilisée plus tard avec une autre fonction openssl comme openssl_sign (), openssl_csr_new () - pour obtenir un certificat CSR, qui aide à créer une signature numérique cryptographique.

Syntaxe

openssl_pkey_new ([ array $configargs ] ) : resource

Paramètres

Sr.Non Paramètre La description
1

configargs

Le paramètre configargssont les détails de configuration qui doivent être fournis à la fonction pour générer la paire de clés privée / publique. Les détails sont décrits ci-dessous.

configargs

Par défaut, openssl_pkey_new () utilise les détails de configuration présents dans openssl.cnf. Mais en utilisant des configargs, vous pouvez les écraser.Les détails de configuration sont les suivants:

clé dans configargs type clé utilisée dans openssl.conf la description
digest_alg chaîne default_md Digest les méthodes que vous obtenez de openssl_get_md_methods ().
x509_extensions chaîne x509_extensions Extensions utilisées lors de la création d'un certificat x509.
req_extensions chaîne req_extensions Extensions utilisées lors de la création d'un CSR.
private_key_bits entier default_bits Spécifie le nombre de bits à utiliser lors de la génération d'une clé privée.
private_key_type entier aucun Le type de clé privée à créer. Il peut s'agir de OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA ou OPENSSL_KEYTYPE_EC. La valeur par défaut est OPENSSL_KEYTYPE_RSA.
encrypt_key booléen encrypt_key La clé exportée est-elle chiffrée?
encrypt_key_cipher entier aucun Constantes de chiffrement comme OPENSSL_CIPHER_RC2_40 (entier), OPENSSL_CIPHER_RC2_128 (entier), OPENSSL_CIPHER_RC2_64 (entier), OPENSSL_CIPHER_DES (entier), OPENSSL_CIPHER_3DES (entier) etc.
nom_courbe chaîne aucun Un des noms de courbe renvoyés par cette fonction openssl_get_curve_names ().
config chaîne N / A Vous pouvez modifier la configuration dans openssl.conf selon vos besoins et en indiquer le chemin ici.

Valeurs de retour

La fonction PHP openssl_pkey_new () retourne un identifiant de ressource s'il n'y a pas d'erreur. Il renverra false si la génération de clé échoue.

Version PHP

Cette fonction fonctionnera à partir de la version PHP supérieure à 5.0.0.

Exemple 1

Fonctionnement de openssl_pkey_new ():

<?php
   // Generate a new private (and public) key pair
   $privkey = openssl_pkey_new(array(
      "digest_alg"=>'md5',
      "private_key_bits" => 2048,
      "private_key_type" => OPENSSL_KEYTYPE_RSA,
   ));
   var_dump($privkey);
?>

Cela produira le résultat suivant:

resource(2) of type (OpenSSL key)

Exemple 2

Fonctionnement de openssl_pkey_new () et openssl_pkey_get_details:

<?php
   // Generate a new private (and public) key pair
   $privkey = openssl_pkey_new(array(
      "digest_alg"=>'md5',
      "private_key_bits" => 2048,
      "private_key_type" => OPENSSL_KEYTYPE_RSA,
   ));
   $key_details = openssl_pkey_get_details($privkey);
   print_r($key_details);
?>

Cela produira le résultat suivant:

Array (
   [bits] => 2048
   [key] => -----BEGIN PUBLIC KEY-----
   MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1IGWxnWzICSkjrOVrYkw
   9EKpIhcAYbhaymiwQY/ii9d7hnuGhpjjitDxzFftGafL6XOFKOhgbO2yrcpFxRKu
   AY3t5wyUcqUJV6CNwV2Hipk90psUcTmK3+pcCzcqCKr7sLWlHI48lse92xane8Sf
   CATNNbr9vmqUaTZ9FQqWihm3o/rNGuZTwMSKvcKsVguFpwrEDJaSLP1nt7RSHGc+
   PixQSXp3PtQCH+S0CM9jt1jD9NkYXuuAlNbrsPm1fl2zAGR5Vh15evz5765lZ2mH
   LIZScfsO/qgai3R6foaBlJM5tiSeiVZgnnQDKFBi5XK2GhzDnKggJe4tdY7awTFm
   CQIDAQAB
   -----END PUBLIC KEY-----

   [rsa] => Array (
      [n] => ԁ��u� $��0�B�"a�Z�h�A��{�{��W���s�(�`l��E�����r�	W��]��=қq9��\7*���<�ǽ��{ğ�5��j�i6}
      �����S�Ċ�¬V��
      ���,�g��Rg>>,PIzw>���c�X��^뀔��~]�dyVyz��egi�,�Rq����tz~��9�$��V`�t(Pb�r�Ü� %�-u��1f	
         [e] => 
         [d] => F"��3��4��!K�yF��R�lY�9�]Ξ��A��@�f��~�<�YPєG��=��TkTP�rl�Mԓ{�lŮ^��!��q�˂�7�|�f��lE+#�@.�GIH�tS�R.mbc�U~��7&w�ݥ�P.Fe�ϨU�@��m��X�[email protected]/�$l��)�8�@���c�w�NRo��+!'�.��fvT7�=n")LQ�sdš�%zZ��G��{�{�1A^��v��E
         [p] => �>u)��1bǰK�r��pHE��k���LBE��y�'�3-�/��Pd��jeFV1����?�.O���:�bl2�z�U�{��{��*��A���<�}m4��J�Y�'�[email protected]���
         [q] => ߦz\��96�=��V]"k��2w��>�r�袤�6�/�-Z�_��8!Y��I��L���_3Ym���.p�֏^��>�I:��oZ��"��=��8���뻢1��:�
         [dmp1] => z"�TW*��Ƴm�$�HQ�$0��sa��j� #�
         P�*�P��Q�G\42�a�26(�5�K�7zj��xj7��@e�$.6��b�Dq]]
      
       I}�L�m�d��54)@:���# [dmq1] => +��4}��\dc�R�K�Bw�\�E6�����%_�m$3蚞9�Fh�D�uz��$�8HPK�ˇԁ^�K�k�]e�g�>ºX�"
       <ƌ�`ė��&,9e��ms"�� ¥�) [iqmp]>
         !��߷�=�z�=ܰ7��V�6q�~���3V��t�P�$��O�kgv��3=W\ѝm��� �J���5^�K��a�t��~��U�.��!�l�v�#��z*��� ���r ) [type] => 0 ) 
       
      

Exemple 3

Pour lire la clé publique depuis openssl_pkey_new ():

<?php
   echo "The hash of Welcome to Tutorialspoint is - ". hash('crc32b', 'Welcome to Tutorialspoint');
?>

Cela produira le résultat suivant:

-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArAWYwKIaf3uN1bwww4R8 51ifDPGsreqr9cV3J1gSKC8kaAEsAQaZ/6gQlDBsUGs4nE8zKgOlcdOV/JApgAdz +CwoLJUgmEUkLDxOcWaCIUVuHAiyBGJaRKZ+MASy7wRG8hb+INd0/zoQRGXk3+jf Fj6rvSinVg49C4RAkRtkEdNnH0G5s6cedV6ec30DouRTuEQ/Fgizf0qaVtQbAURP n+/LT9V8c4LMaCyID7caTQOXAEjQqD4ooXGkOzmcsp03j2/F+T2mSIQRtI1gGJkZ oCMGX/xRxh5uemCcC4jcshn45Ikmb/S7WFqTCOC0e8l8CiTZ5Rr8EKFgtwliMds8 pQIDAQAB -----END PUBLIC KEY-----

Exemple 4

Pour stocker la clé publique de openssl_pkey_new () dans un fichier:

<?php
   // Generate a new private (and public) key pair

   $privkey = openssl_pkey_new(array(
      "digest_alg"=>'md5',
      "private_key_bits" => 2048,
      "private_key_type" => OPENSSL_KEYTYPE_RSA,
   ));
   $keydetails = openssl_pkey_get_details($privkey);

   // To save the public key to a file 
   file_put_contents('mypublic.key', $keydetails['key']);
?>

Le contenu du fichier mypublic.key est:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3QxA7vWIz+F5t12/fl0H
vyavVy/ZNZFWGK6BID/koYeVA2wKdXx9De3gn0hs4sSrN3aV58ctuxDVx36rKvYd
AjKHfnfh7NmXnCEeUE4SgUUe0UUleoEMtsPP2Q8BC1HUjcC6SyJQKZG0bQqQlnAb
HL7ou2TNsjA/SiJbPD+0OpsLAcW1c/DeoM+TAkZo0JIlgxjcJ5ZlEbJ0Mxv6m9XK
k3bbMYHtKmZl+fzfPNcxCuK8Djnm5mYVR9KX1L86m1jz2kUQT/+wW84QRnZ7G+z8
4rQ77sZvWiIwwO2JmUvIsYeUxEP6/keZbDRuyO/2tWk/VxqQry4+Ktix/M2/iKWo
QQIDAQAB
-----END PUBLIC KEY-----