English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel PHP de base

Tutoriel PHP avancé

PHP & MySQL

Manuel de référence PHP

Utilisation et exemples de la fonction openssl_pkey_new() en PHP

PHP OpenSSL Fonction Manual

La fonction openssl_pkey_new()() est utilisée pour générer un nouveau clé privé.

Définition et utilisation

openssl_pkey_new() génère un nouveau pair de clé privé et public. Vous pouvez obtenir le composant public de cette clé en utilisant la fonction openssl_pkey_get_public().

La fonction openssl_pkey_new() retourne un identificateur de ressource. Vous pouvez utiliser la fonction openssl_pkey_get_details() pour obtenir tous les détails sur la clé générée. Clé (publique/Pair privé) à utiliser avec d'autres fonctions openssl (par exemple, openssl_sign(), openssl_csr_new()) plus tard-Obtenez un certificat CSR, ce certificat aide à créer une signature numérique cryptée.

Syntaxe

openssl_pkey_new ([ array $configargs ] ) : ressource

Paramètres

NuméroParamètresDescription
1

configargs

Vous pouvez utiliser le paramètre configargs pour ajuster la génération de la clé (par exemple, définir le nombre de chiffres). Consultez openssl_csr_new() pour plus d'informations sur configargs.

Paramètres de configuration

Par défaut, openssl_pkey_new( ) utilise les détails de configuration existants dans openssl.cnf. Mais configargs peut les remplacer. Les détails de configuration sont les suivants:

configargsTypeClés utilisées dans openssl.confDescription
digest_algChaînedefault_mdMéthode de résume que vous obtenez de openssl_get_md_methods().
x509_extensionsChaînex509_extensionscréer x509Extensions utilisées lors de la création du certificat.
req_extensionsChaînereq_extensionsExtension utilisée lors de la création du CSR.
private_key_bitsentierdefault_bitsSpécifiez le nombre de bits à utiliser lors de la génération de la clé privée.
private_key_typeentiernoneLe type de clé privée à créer. Il peut être OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA ou OPENSSL_KEYTYPE_EC. La valeur par défaut est OPENSSL_KEYTYPE_RSA.
encrypt_keyValeur booléenneencrypt_keyEst-ce que la clé exportée est chiffrée?
encrypt_key_cipherentiernoneConstantes de cryptage, par exemple OPENSSL_CIPHER_RC2_40 (entier), OPENSSL_CIPHER_RC2_128(entier), OPENSSL_CIPHER_RC2_64_ (entier), OPENSSL_CIPHER_RC3DES (entier), OPENSSL_CIPHER_DES (entier), OPENSSL_CIPHER_
curve_nameChaînenoneL'un des noms de courbes retournés par la fonction openssl_get_curve_names().
configChaîneN/AVous pouvez modifier la configuration dans openssl.conf si nécessaire, et fournir son chemin ici.

Valeur de retour

Si il n'y a pas d'erreur, la fonction PHP openssl_pkey_new() retournera un identifiant de ressource. Si la génération de la clé échoue, elle retournera false.

PHP

Cette fonction retournera un identifiant de ressource à partir de la version PHP5commence à fonctionner depuis la version PHP 0.0.0.

Exemple1

Fonction de openssl_pkey_new():

<?php
   //Générer un nouveau couple de clés privées (et publiques)
   $privkey = openssl_pkey_new(array(
      "digest_alg" => md5',
      "private_key_bits" => 2048,
      "private_key_type" => OPENSSL_KEYTYPE_RSA,
   ));
	var_dump($privkey);
?>

这将产生以下结果:

ressource(2) de type (Clé OpenSSL)

Exemple2

Fonction de openssl_pkey_new() et openssl_pkey_get_details:

<?php
   //Générer un nouveau couple de clés privées (et publiques)
   $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);
?>

这将产生以下结果:

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 => lY9=> A => @ => f => ~ => < => YP => G => = => TkTP => rl => M => ԓ{ => l => l => Ů^ => ! => q => ˂7=> f => lE+# => . => GIH => tS => R => mbc => U => ~7=> P.Fe => U => m => X => ECsemjI => @/=> l8=> c w NRo+!' => .7=> n) LQ sd%zZ G{ {1A^ => E
            [p] => =>1bǰK�r���pHE��k���LBE����y�'�3-�/��Pd���jeFV1����?�.O�����:�bl2�z�U�{��{��*��A���<�}m4��J�Y�'���f@�����
            [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
)

Exemple3

要从openssl_pkey_new()读取公钥:

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

这将产生以下结果:

-----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-----

Exemple4

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

<?php
   // Générer un nouveau couple de clés privées (et publiques)
   $privkey = openssl_pkey_new(array(
      "digest_alg" => md5',
      "private_key_bits" => 2048,
      "private_key_type" => OPENSSL_KEYTYPE_RSA,
   ));
   $keydetails = openssl_pkey_get_details($privkey);
   //Pour sauvegarder la clé publique dans un fichier
   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-----

PHP OpenSSL Fonction Manual