PHP - Função openssl_pkey_new ()
Definição e Uso
o openssl_pkey_new() A função retornará o identificador de recurso que possui um novo par de chaves pública e privada.
Descrição
A função openssl_pkey_new () retorna um identificador de recurso. Você pode utilizar a função openssl_pkey_get_details () para obter todos os detalhes da chave gerada. A chave (par público / privado) é usada posteriormente com outra função openssl como openssl_sign (), openssl_csr_new () - para obter o certificado CSR, que ajuda a criar assinatura digital criptográfica.
Sintaxe
openssl_pkey_new ([ array $configargs ] ) : resource
Parâmetros
Sr. Não | Parâmetro | Descrição |
---|---|---|
1 |
configargs |
O parâmetro configargssão os detalhes de configuração que precisam ser fornecidos à função para gerar o par de chaves privada / pública. Os detalhes são descritos a seguir. |
configargs
Por padrão, o openssl_pkey_new () faz uso dos detalhes de configuração presentes no openssl.cnf. Mas usando configargs, você pode substituí-los. Os detalhes de configuração são os seguintes:
chave em configargs | tipo | chave usada em openssl.conf | descrição |
---|---|---|---|
digest_alg | corda | default_md | Métodos resumidos que você obtém em openssl_get_md_methods (). |
x509_extensions | corda | x509_extensions | Extensões usadas ao criar um certificado x509. |
req_extensions | corda | req_extensions | Extensões usadas ao criar um CSR. |
private_key_bits | inteiro | default_bits | Especifica quantos bits devem ser usados ao gerar uma chave privada. |
private_key_type | inteiro | Nenhum | O tipo de chave privada a ser criada. Pode ser um de OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA ou OPENSSL_KEYTYPE_EC. O valor padrão é OPENSSL_KEYTYPE_RSA. |
encrypt_key | boleano | encrypt_key | Se a chave exportada deve ser criptografada? |
encrypt_key_cipher | inteiro | Nenhum | Constantes de codificação como OPENSSL_CIPHER_RC2_40 (inteiro), OPENSSL_CIPHER_RC2_128 (inteiro), OPENSSL_CIPHER_RC2_64 (inteiro), OPENSSL_CIPHER_DES (inteiro), OPENSSL_CIPHER_3DES (inteiro) etc. |
curve_name | corda | Nenhum | Um dos nomes da curva retornado por esta função openssl_get_curve_names (). |
config | corda | N / D | Você pode alterar a configuração em openssl.conf de acordo com suas necessidades e fornecer o caminho aqui. |
Valores Retornados
A função PHP openssl_pkey_new () retorna um identificador de recurso se não houver erro. Ele retornará falso se a geração da chave falhar.
Versão PHP
Esta função funcionará na versão do PHP superior a 5.0.0.
Exemplo 1
Trabalho de 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);
?>
Isso produzirá o seguinte resultado:
resource(2) of type (OpenSSL key)
Exemplo 2
Trabalho de 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);
?>
Isso produzirá o seguinte resultado:
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 R g>>,PIzw> c X ^뀔 ~] dyV yz 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+# @ . G IH tS R.mbc U~ 7&w ݥ P. Fe ϨU @ m X [email protected]/ $l ) 8 @ c w NRo +! ' . fv T7 =n")L Q s dš %zZ G { { 1 A^ 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 2 w > r 袤 6 / -Z _ 8!Y I L _3Ym . p ֏ ^ > I: o Z " = 8 뻢1 :
[dmp1] => z" TW* Ƴm $ HQ $0 sa j #
P * P Q G \42 a 26( 5 K 7zj xj7 @e $.6 b D q]]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 M S" ¥ )
[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
)
Exemplo 3
Para ler a chave pública de openssl_pkey_new ():
<?php
echo "The hash of Welcome to Tutorialspoint is - ". hash('crc32b', 'Welcome to Tutorialspoint');
?>
Isso produzirá o seguinte resultado:
-----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-----
Exemplo 4
Para armazenar a chave pública de openssl_pkey_new () em um arquivo:
<?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']);
?>
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-----