PHP - Funzione openssl_pkey_new ()
Definizione e utilizzo
Il openssl_pkey_new() la funzione restituirà l'identificatore della risorsa che ha una nuova coppia di chiavi privata e pubblica.
Descrizione
La funzione openssl_pkey_new () restituisce un identificatore di risorsa. È possibile utilizzare la funzione openssl_pkey_get_details () per ottenere tutti i dettagli della chiave generata. La chiave (coppia pubblica / privata) viene utilizzata successivamente con altre funzioni openssl come openssl_sign (), openssl_csr_new () - per ottenere il certificato CSR, che aiuta a creare una firma digitale crittografica.
Sintassi
openssl_pkey_new ([ array $configargs ] ) : resource
Parametri
Suor n | Parametro | Descrizione |
---|---|---|
1 | configargs |
Il parametro configargssono i dettagli di configurazione che devono essere forniti alla funzione per generare la coppia di chiavi pubblica / privata. I dettagli sono descritti di seguito. |
configargs
Per impostazione predefinita openssl_pkey_new () utilizza i dettagli di configurazione presenti in openssl.cnf. Ma usando configargs puoi sovrascriverli. I dettagli di configurazione sono i seguenti:
digitare configargs | genere | chiave utilizzata in openssl.conf | descrizione |
---|---|---|---|
digest_alg | corda | default_md | Metodi di digest che ottieni da openssl_get_md_methods (). |
x509_extensions | corda | x509_extensions | Estensioni utilizzate durante la creazione di un certificato x509. |
req_extensions | corda | req_extensions | Estensioni utilizzate durante la creazione di una CSR. |
private_key_bits | numero intero | default_bits | Specifica quanti bit devono essere utilizzati durante la generazione di una chiave privata. |
private_key_type | numero intero | nessuna | Il tipo di chiave privata da creare. Può essere OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA o OPENSSL_KEYTYPE_EC. Il valore predefinito è OPENSSL_KEYTYPE_RSA. |
encrypt_key | booleano | encrypt_key | Se la chiave esportata è crittografata? |
encrypt_key_cipher | numero intero | nessuna | Costanti di cifratura come OPENSSL_CIPHER_RC2_40 (integer), OPENSSL_CIPHER_RC2_128 (integer), OPENSSL_CIPHER_RC2_64 (integer), OPENSSL_CIPHER_DES (integer), OPENSSL_CIPHER_3DES (integer) ecc. |
nome_curva | corda | nessuna | Uno dei nomi di curva restituiti da questa funzione openssl_get_curve_names (). |
config | corda | N / A | Puoi modificare la configurazione in openssl.conf secondo le tue esigenze e fornirne il percorso qui. |
Valori restituiti
La funzione openssl_pkey_new () di PHP restituisce un identificatore di risorsa se non ci sono errori. Restituirà false se la generazione della chiave fallisce.
Versione PHP
Questa funzione funzionerà dalla versione PHP successiva alla 5.0.0.
Esempio 1
Utilizzo di 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);
?>
Questo produrrà il seguente risultato:
resource(2) of type (OpenSSL key)
Esempio 2
Funzionamento di openssl_pkey_new () e 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);
?>
Questo produrrà il seguente risultato:
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 )
Esempio 3
Per leggere la chiave pubblica da openssl_pkey_new ():
<?php
echo "The hash of Welcome to Tutorialspoint is - ". hash('crc32b', 'Welcome to Tutorialspoint');
?>
Questo produrrà il seguente risultato:
-----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-----
Esempio 4
Per memorizzare la chiave pubblica da openssl_pkey_new () in un file:
<?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']);
?>
Il contenuto del file mypublic.key è:
-----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-----