定義和用法
這個openssl_pkey_new()函數將返回具有新的私鑰和公鑰對的資源標識符。
描述
函數 openssl_pkey_new() 返回一個資源標識符。您可以使用 openssl_pkey_get_details() 函數來獲取生成的 key 的所有詳細信息。 key (公共/私有對)稍後與其他 openssl 函數(如 openssl_sign()、openssl_csr_new())一起使用 - 以獲取 CSR 證書,這有助於創建加密數字簽名。
用法
openssl_pkey_new ([ array $configargs ] ):resource
參數
Sr.No | 參數 | 描述 |
---|---|---|
1 |
configargs |
參數configargs是需要提供給函數以生成私鑰/公鑰對的配置詳細信息。詳情如下。 |
配置參數
默認情況下,openssl_pkey_new() 使用 openssl.cnf 中的配置細節。但是使用 configargs 你可以覆蓋它們。 配置細節如下:
配置參數中的鍵 | 類型 | openssl.conf 中使用的 key | 描述 |
---|---|---|---|
digest_alg | string | default_md | 從 openssl_get_md_methods() 獲得的摘要方法。 |
x509_extensions | string | x509_extensions | 創建 x509 證書時使用的擴展。 |
req_extensions | string | req_extensions | 創建 CSR 時使用的擴展。 |
private_key_bits | integer | default_bits | 指定生成私鑰時要使用的位數。 |
private_key_type | integer | none | 要創建的私鑰的類型。它可以是 OPENSSL_KEYTYPE_DSA、OPENSSL_KEYTYPE_DH、OPENSSL_KEYTYPE_RSA 或 OPENSSL_KEYTYPE_EC 之一。默認值為 OPENSSL_KEYTYPE_RSA。 |
encrypt_key | boolean | encrypt_key | 導出的 key 是否加密? |
encrypt_key_cipher | integer | none | 密碼常量如 OPENSSL_CIPHER_RC2_40(整數)、OPENSSL_CIPHER_RC2_128(整數)、OPENSSL_CIPHER_RC2_64(整數)、OPENSSL_CIPHER_DES(整數)、 OPENSSL_CIPHER_3DES(整數)等 |
curve_name | string | none | 此函數返回的曲線名稱之一 openssl_get_curve_names()。 |
config | string | 不適用 | 您可以根據需要更改 openssl.conf 中的配置,並在此處提供它的路徑。 |
返回值
如果沒有錯誤,PHP openssl_pkey_new() 函數返回一個資源標識符。如果 key 生成失敗,它將返回 false。
PHP版本
此函數適用於 5.0.0 以上的 PHP 版本。
例子1
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);
?>
這將產生以下結果:
resource(2) of type (OpenSSL key)
例子2
openssl_pkey_new() 和 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);
?>
這將產生以下結果:
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��~��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]]\Vk>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 )
例子3
從 openssl_pkey_new() 讀取公鑰:
<?php
echo "The hash of Welcome to Tutorialspoint is - ". hash('crc32b', 'Welcome to Tutorialspoint');
?>
這將產生以下結果:
-----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-----
示例 4
要將來自 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,
));
$keydetails = openssl_pkey_get_details($privkey);
// To save the public key to a file
file_put_contents('mypublic.key', $keydetails['key']);
?>
文件 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-----
相關用法
- PHP openssl_pkey_export()用法及代碼示例
- PHP openssl_pkey_export_to_file()用法及代碼示例
- PHP openssl_pkey_get_public()用法及代碼示例
- PHP openssl_pkcs12_export()用法及代碼示例
- PHP openssl_pkcs12_export_to_file()用法及代碼示例
- PHP openssl_pkcs12_read()用法及代碼示例
- PHP openssl_public_decrypt()用法及代碼示例
- PHP openssl_private_encrypt()用法及代碼示例
- PHP openssl_public_encrypt()用法及代碼示例
- PHP openssl_private_decrypt()用法及代碼示例
- PHP openssl_get_cert_locations()用法及代碼示例
- PHP openssl_cipher_iv_length()用法及代碼示例
- PHP openssl_spki_verify()用法及代碼示例
- PHP openssl_get_curve_names()用法及代碼示例
- PHP openssl_get_cipher_methods()用法及代碼示例
- PHP openssl_spki_export_challenge()用法及代碼示例
- PHP opendir()用法及代碼示例
- PHP output_add_rewrite_var()用法及代碼示例
- PHP octdec( )用法及代碼示例
- PHP ord()用法及代碼示例
注:本文由純淨天空篩選整理自 PHP - Function openssl_pkey_new()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。