English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La funzione openssl_pkey_new()() viene utilizzata per generare una nuova chiave privata.
openssl_pkey_new() genera un nuovo paio di chiave privata e pubblica. Puoi ottenere il componente pubblico della chiave utilizzando la funzione openssl_pkey_get_public().
La funzione openssl_pkey_new() restituisce un identificatore di risorsa. Puoi ottenere tutte le informazioni dettagliate sulla chiave generata utilizzando la funzione openssl_pkey_get_details(). La chiave (paio pubblico/privato) viene utilizzata insieme ad altre funzioni openssl (ad esempio openssl_sign(), openssl_csr_new()) per ottenere il certificato CSR, che aiuta a creare una firma digitale.
openssl_pkey_new ([ array $configargs ] ) : resource
Numero di sequenza | Parametro | Descrizione |
---|---|---|
1 | configargs | Puoi utilizzare i parametri configargs per ottimizzare la generazione della chiave (ad esempio, specificare il numero di cifre). Per ulteriori informazioni su configargs, consulta openssl_csr_new(). |
Di default, openssl_pkey_new( ) utilizza i dettagli di configurazione esistenti in openssl.cnf. Ma configargs può sovrascrivere questi dettagli. I dettagli di configurazione sono i seguenti:
configargs | Tipo | La chiave utilizzata in openssl.conf | Descrizione |
---|---|---|---|
digest_alg | Stringa | default_md | Il metodo di riassunto ottenuto da openssl_get_md_methods(). |
x509_extensions | Stringa | x509_extensions | L'estensione utilizzata durante la creazione del certificato x509. |
req_extensions | Stringa | req_extensions | L'estensione utilizzata durante la creazione del CSR. |
private_key_bits | Intero | default_bits | Specificare il numero di bit da utilizzare durante la generazione della chiave privata. |
private_key_type | Intero | nessuno | Il tipo di chiave privata da creare. Può essere uno di OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA o OPENSSL_KEYTYPE_EC. Il valore predefinito è OPENSSL_KEYTYPE_RSA. |
encrypt_key | Valore booleano | encrypt_key | È la chiave esportata criptata? |
encrypt_key_cipher | Intero | nessuno | Costanti di password, ad esempio OPENSSL_CIPHER_RC2_40 (intero), OPENSSL_CIPHER_RC2_128 (intero), OPENSSL_CIPHER_RC2_64 (intero), OPENSSL_CIPHER_DES (intero), OPENSSL_CIPHER_3DES (intero) e così via. |
curve_name | Stringa | nessuno | Uno dei nomi della curva restituiti dalla funzione openssl_get_curve_names(). |
config | Stringa | N/A | Puoi modificare la configurazione in openssl.conf se necessario e fornire il percorso qui. |
Se non ci sono errori, la funzione PHP openssl_pkey_new() restituirà un identificatore di risorsa. Se la generazione della chiave fallisce, restituirà false.
Questa funzione funzionerà a partire dalla versione PHP maggiore di 5.0.0.
Funzione openssl_pkey_new():
<?php //Generare una nuova coppia di chiavi private (e pubblica) $privkey = openssl_pkey_new(array( "digest_alg" => 'md5', "private_key_bits" => 2048, )); var_dump($privkey); ?>
Questo produrrà il seguente risultato:
risorsa(2) di tipo (chiave OpenSSL)
Funzione openssl_pkey_new() e openssl_pkey_get_details:
<?php //Generare una nuova coppia di chiavi private (e pubblica) $privkey = openssl_pkey_new(array( "digest_alg" => 'md5', "private_key_bits" => 2048, )); $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 -----FINELLA CHIAVE PUBBLICA----- [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�ECsemjI$@/�$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�'���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 )
Per leggere la chiave pubblica da openssl_pkey_new():
<?php echo "The hash di Welcome to w3codebox è - ". hash('crc32b', 'Welcome to w3codebox'); ?>
Questo produrrà il seguente risultato:
-----INIZIO CHIAVE PUBBLICA-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArAWYwKIaf3uN1bwww4R851ifDPGsreqr9cV3J1gSKC8kaAEsAQaZ/6gQlDBsUGs4nE8zKgOlcdOV/JApgAdz+CwoLJUgmEUkLDxOcWaCIUVuHAiyBGJaRKZ+MASy7wRG8hb+INd0/zoQRGXk3+jfFj6rvSinVg49C4RAkRtkEdNnH0G5s6cedV6ec30DouRTuEQ/Fgizf0qaVtQbAURPn+/LT9V8c4LMaCyID7caTQOXAEjQqD4ooXGkOzmcsp03j2/F+T2mSIQRtI1gGJkZoCMGX/xRxh5uemCcC4jcshn45Ikmb/S7WFqTCOC0e8l8CiTZ5Rr8EKFgtwliMds8pQIDAQAB-----FINE CHIAVE PUBBLICA-----
Per salvare la chiave pubblica in un file da openssl_pkey_new():
<?php $privkey = openssl_pkey_new(array( "digest_alg" => 'md5', "private_key_bits" => 2048, )); $keydetails = openssl_pkey_get_details($privkey); //Salvare la chiave pubblica in un file file_put_contents('mypublic.key', $keydetails['key']); ?>
Il contenuto del file mypublic.key è:
-----INIZIO CHIAVE PUBBLICA----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3QxA7vWIz+F5t12/fl0H vyavVy/ZNZFWGK6BID/koYeVA2wKdXx9De3gn0hs4sSrN3aV58ctuxDVx36rKvYd AjKHfnfh7NmXnCEeUE4SgUUe0UUleoEMtsPP2Q8BC1HUjcC6SyJQKZG0bQqQlnAb HL7ou2TNsjA/SiJbPD+0OpsLAcW1c/DeoM+TAkZo0JIlgxjcJ5ZlEbJ0Mxv6m9XK k3bbMYHtKmZl+fzfPNcxCuK8Djnm5mYVR9KX1L86m1jz2kUQT/+wW84QRnZ7G+z8 4rQ77sZvWiIwwO2JmUvIsYeUxEP6/keZbDRuyO/2tWk/VxqQry4+Ktix/M2/iKWo QQIDAQAB -----FINELLA CHIAVE PUBBLICA-----