PHP 菜鳥教程

PHP 高級教程

PHP & MySQL

PHP 參考手冊

PHP openssl_pkey_new() 函數(shù)用法及示例

PHP OpenSSL 函數(shù)手冊

openssl_pkey_new()()函數(shù)用于生成一個新的私鑰。

定義和用法

openssl_pkey_new() 生成一個新的私鑰和公鑰對。通過 openssl_pkey_get_public() 函數(shù)獲取該密鑰的公共組件。

函數(shù)openssl_pkey_new()返回資源標(biāo)識符。您可以使用 openssl_pkey_get_details() 函數(shù)獲取生成的密鑰的所有詳細(xì)信息。密鑰(公用/專用對)稍后與其他openssl函數(shù)(例如openssl_sign(),openssl_csr_new())一起使用-獲得CSR證書,該證書有助于創(chuàng)建加密數(shù)字簽名。

語法

openssl_pkey_new ([ array $configargs ] ) : resource

參數(shù)

序號參數(shù)描述
1

configargs

你可以使用configargs參數(shù)微調(diào)密鑰的生成(比如指定位數(shù))。查看openssl_csr_new()獲取更多關(guān)于configargs的信息。

配置參數(shù)

默認(rèn)情況下,openssl_pkey_new( )使用 openssl.cnf 中存在的配置詳細(xì)信息。但是使用configargs可以覆蓋它們。配置詳細(xì)信息如下:

configargs類型openssl.conf中使用的密鑰描述
digest_alg字符串default_md您從openssl_get_md_methods()獲得的摘要方法。
x509_extensions字符串x509_extensions創(chuàng)建x509證書時使用的擴(kuò)展名。
req_extensions字符串req_extensions創(chuàng)建CSR時使用的擴(kuò)展名。
private_key_bits整數(shù)default_bits指定在生成私鑰時要使用的位數(shù)。
private_key_type整數(shù)none要創(chuàng)建的私鑰類型。它可以是OPENSSL_KEYTYPE_DSA,OPENSSL_KEYTYPE_DH,OPENSSL_KEYTYPE_RSA或OPENSSL_KEYTYPE_EC中的一種。默認(rèn)值為OPENSSL_KEYTYPE_RSA。
encrypt_key布爾值encrypt_key導(dǎo)出的密鑰是否被加密?
encrypt_key_cipher整數(shù)none密碼常數(shù),例如OPENSSL_CIPHER_RC2_40(整數(shù)),OPENSSL_CIPHER_RC2_128(整數(shù)),OPENSSL_CIPHER_RC2_64(整數(shù)),OPENSSL_CIPHER_DES(整數(shù)),OPENSSL_CIPHER_3DES(整數(shù))等。
curve_name字符串none此函數(shù)openssl_get_curve_names()返回的曲線名稱之一。
config字符串N/A您可以根據(jù)需要在openssl.conf中更改配置,并在此處提供其路徑。

返回值

如果沒有錯誤,PHP openssl_pkey_new()函數(shù)將返回資源標(biāo)識符。如果密鑰生成失敗,它將返回false。

PHP版本

此函數(shù)將從大于5.0.0的PHP版本開始工作。

實例1

openssl_pkey_new()的工作:

<?php
   //生成新的私鑰(和公鑰)對
   $privkey = openssl_pkey_new(array(
      "digest_alg"=>'md5',
      "private_key_bits" => 2048,
      "private_key_type" => OPENSSL_KEYTYPE_RSA,
   ));
	var_dump($privkey);
?>

這將產(chǎn)生以下結(jié)果:

resource(2) of type (OpenSSL key)

實例2

openssl_pkey_new()和openssl_pkey_get_details的工作:

<?php
   //生成新的私鑰(和公鑰)對
   $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);
?>

這將產(chǎn)生以下結(jié)果:

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?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?>oX?"<????`????&,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 nhooo is - ". hash('crc32b', 'Welcome to nhooo');
?>

這將產(chǎn)生以下結(jié)果:

-----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
   // 生成新的私鑰(和公鑰)對

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

   //要將公鑰保存到文件中
   file_put_contents('mypublic.key', $keydetails['key']);
?>

文件mypublic.key的內(nèi)容是:

-----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 函數(shù)手冊

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清