English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
A função openssl_pkey_new() é usada para gerar uma nova chave privada.
openssl_pkey_new() gera um novo par de chave privada e pública. Você pode obter o componente público dessa chave usando a função openssl_pkey_get_public().
A função openssl_pkey_new() retorna um identificador de recurso. Você pode usar a função openssl_pkey_get_details() para obter todos os detalhes da chave gerada. Chave (pública/Uso exclusivo para) mais tarde, juntamente com outras funções openssl (por exemplo, openssl_sign(), openssl_csr_new())-Obtenha o certificado CSR, que ajuda a criar assinaturas digitais criptografadas.
openssl_pkey_new ([ array $configargs ] ) : resource
Número de série | Parâmetros | Chave usada no openssl.conf |
---|---|---|
1 | Padrão, openssl_pkey_new( ) usa detalhes de configuração existentes no openssl.cnf. No entanto, pode ser substituído usando configargs. Os detalhes de configuração são os seguintes: | Você pode usar o parâmetro configargs para ajustar a geração da chave (por exemplo, especificar o número de dígitos). Consulte openssl_csr_new() para mais informações sobre configargs. |
Parâmetros de configuração
Padrão, openssl_pkey_new( ) usa detalhes de configuração existentes no openssl.cnf. No entanto, pode ser substituído usando configargs. Os detalhes de configuração são os seguintes: | configargs | Tipo | Chave usada no openssl.conf |
---|---|---|---|
Descrição | cadeia | digest_alg | default_md |
O método de resumo obtido a partir de openssl_get_md_methods().509x | cadeia | O método de resumo obtido a partir de openssl_get_md_methods().509x | _extensions509x |
O nome da extensão usado ao criar o certificado. | cadeia | O nome da extensão usado ao criar o certificado. | req_extensions |
O nome da extensão usado ao criar o CSR. | encrypt_key_cipher | private_key_bits | default_bits |
Especifique o número de bits a ser usado ao gerar a chave privada. | encrypt_key_cipher | nenhum | private_key_type |
booleano | O tipo de chave privada a ser criada. Pode ser um dos seguintes: OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA ou OPENSSL_KEYTYPE_EC. O valor padrão é OPENSSL_KEYTYPE_RSA. | booleano | encrypt_key |
O chave exportada está criptografada? | encrypt_key_cipher | nenhum | inteiro2_4Constantes de criptografia, por exemplo, OPENSSL_CIPHER_RC2_1280 (inteiro), OPENSSL_CIPHER_RC2_64_ (inteiro), OPENSSL_CIPHER_RC3DES (inteiro), OPENSSL_CIPHER_DES (inteiro), OPENSSL_CIPHER_ |
curve_name | cadeia | nenhum | Um dos nomes de curva retornados pela função openssl_get_curve_names(). |
config | cadeia | N/A | Você pode alterar as configurações no openssl.conf conforme necessário e fornecer o caminho aqui. |
Se não houver erros, a função PHP openssl_pkey_new() retornará um identificador de recurso. Se a geração da chave falhar, ela retornará false.
Esta função retornará um identificador de recurso a partir de versões do PHP maiores que5começa a funcionar a partir da versão 0.0 do PHP.
A função openssl_pkey_new():
<?php //Gerar um novo par de chaves privada (e pública) $privkey = openssl_pkey_new(array( "digest_alg" => md5', "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, )); var_dump($privkey); ?>
这将产生以下结果:
recurso(2) de tipo (Chave OpenSSL)
A função openssl_pkey_new() e openssl_pkey_get_details():
<?php //Gerar um novo par de chaves privada (e pública) $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----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1=>IGWxnWzICSkjrOVrYkw 9=>EKpIhcAYbhaymiwQY/=>ii9=>d7=>hnuGhpjjitDxzFftGafL6=>XOFKOhgbO2=>yrcpFxRKu =>AY3t5=>wyUcqUJV6=>CNwV2=>Hipk9=>0psUcTmK3+=>pcCzcqCKr7=>sLWlHI48=>lse92=>xane8=>Sf =>CATNNbr9=>vmqUaTZ9=>FQqWihm3=>o/=>rNGuZTwMSKvcKsVguFpwrEDJaSLP1=>nt7=>RSHGc+ =>PixQSXp3=>PtQCH+=>S0CM9=>jt1=>jD9=>NkYXuuAlNbrsPm1=>fl2=>zAGR5=>Vh15=>evz5765=>lZ2=>mH =>LIZScfsO/=>qgai3R6=>foaBlJM5=>tiSeiVZgnnQDKFBi5XK2=>GhzDnKggJe4=>tdY7=>awTFm =>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 => mstz => ~ =>9=>$ => V` => t(Pb => r => => % =>-=>u =>1=>f =>[ => e => => =>[ => d => => F" =>3����4=> => !K => yF => R => lY =>9=>] => Ξ => A => @ => f => ~ => < => YPєG => = => ���TkTP => rl => M => ԓ{ => l => 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^ => 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 )
要从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-----
Para salvar a chave pública no arquivo usando openssl_pkey_new():
<?php // Gerar um novo par de chaves privada (e pública) $privkey = openssl_pkey_new(array( "digest_alg" => md5', "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, )); $keydetails = openssl_pkey_get_details($privkey); //Para salvar a chave pública em um arquivo: file_put_contents('mypublic.key', $keydetails['key']); ?>
O conteúdo do arquivo 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-----