PHP - Função openssl_public_decrypt ()

Definição e Uso

o openssl_public_decrypt() função irá descriptografar os dados com a chave pública.

Descrição

Usar a função openssl_public_decrypt () irá descriptografar os dados que foram criptografados usando openssl_private_encrypt ().

Sintaxe

openssl_public_decrypt ( string $data , string &$decrypted , mixed $key [, int $padding = OPENSSL_PKCS1_PADDING ] ) : bool

Parâmetros

Sr. Não Parâmetro Descrição
1

data

Os dados criptografados usando openssl_private_encrypt ().

2

decrypted

Ele terá os dados que são descriptografados.

3

key

A chave pública.

4

padding

O preenchimento que você pode aplicar é: OPENSSL_PKCS1_PADDING, OPENSSL_NO_PADDING.

Valores Retornados

A função PHP openssl_public_decrypt () retorna TRUE em caso de sucesso ou FALSE em caso de falha.

Versão PHP

Esta função funcionará na versão do PHP superior a 5.0.0.

Exemplo 1

Para criptografar dados usando openssl_private_encrypt () e descriptografar usando openssl_public_decrypt ():

<?php
   // Save Private Key
   $privkey = openssl_pkey_new();
   openssl_pkey_export_to_file($privkey, 'C:/xampp/htdocs/modules/openssl/privatekey.pem');
	
   // To encrpt data
   $data = 'Welcome To TuorialsPoint';
   $isvalid = openssl_private_encrypt ($data, $crypted , file_get_contents('C:/xampp/htdocs/modules/openssl/privatekey.pem'),OPENSSL_PKCS1_PADDING);	
   echo "Data encryption : ".$crypted;
   echo ">br/<>br/<";
	
   //Save Public Key
   $dn = array(
      "countryName" => "IN",
      "stateOrProvinceName" => "Karnataka",
      "localityName" => "test1",
      "organizationName" => "test2",
      "organizationalUnitName" => "test3",
      "commonName" => "www.test.com",
      "emailAddress" => "[email protected]"
   );
   $cert = openssl_csr_new($dn, $privkey);
   $cert = openssl_csr_sign($cert, null, $privkey, 365);
   openssl_x509_export_to_file($cert, 'C:/xampp/htdocs/modules/openssl/publickey.pem');
		
   if ($isvalid) {	
      openssl_public_decrypt ($crypted, $decrypted , file_get_contents('C:/xampp/htdocs/modules/openssl/publickey.pem'),OPENSSL_PKCS1_PADDING);	
      echo "Data decryption : ".$decrypted;
   }
?>

Isso produzirá o seguinte resultado:

Data encryption : k  G    7 )xy{   N3Г x< J ^  gd  Ψ I? {  < Ws3  m W$  h  (F; tJ J W  | 9 L vL  xF  f  , (N   ΰ  n      Y%Oo, 2  Qh  G  |-  }    1 6   Tm qS wb   [ i -r F  rQhZ  $       U pM C   Y n  0 ,Z CuG  8 h  @4f  7ؕ  w  ;  d  ʈ  $ I^ Z  at  ? 

Data decryption : Welcome To TuorialsPoint

Exemplo 2

Para criptografar o conteúdo do arquivo usando openssl_private_encrypt () e descriptografar usando openssl_public_decrypt ():

<?php
   // Save Private Key
   $privkey = openssl_pkey_new();
   openssl_pkey_export_to_file($privkey, 'C:/xampp/htdocs/modules/openssl/privatekey.pem');
	
   // To encrpt data
   $data = file_get_contents('C:/xampp/htdocs/modules/openssl/test.txt');
   $isvalid = openssl_private_encrypt ($data, $crypted , file_get_contents('C:/xampp/htdocs/modules/openssl/privatekey.pem'),OPENSSL_PKCS1_PADDING);	
   echo "Data encryption : ".$crypted;
   echo ">br/<>br/<";
	
   //Save Public Key
   $dn = array(
      "countryName" => "IN",
      "stateOrProvinceName" => "Karnataka",
      "localityName" => "test1",
      "organizationName" => "test2",
      "organizationalUnitName" => "test3",
      "commonName" => "www.test.com",
      "emailAddress" => "[email protected]"
   );
   $cert = openssl_csr_new($dn, $privkey);
   $cert = openssl_csr_sign($cert, null, $privkey, 365);
   openssl_x509_export_to_file($cert, 'C:/xampp/htdocs/modules/openssl/publickey.pem');
		
   if ($isvalid) {	
      openssl_public_decrypt ($crypted, $decrypted , file_get_contents('C:/xampp/htdocs/modules/openssl/publickey.pem'),OPENSSL_PKCS1_PADDING);	
      echo "Data decryption : ".$decrypted;
   }
?>

Isso produzirá o seguinte resultado:

Data encryption :   V* [email protected]ҺX i mM6    ,? F,  + q   @    g N6c<*eh  :  5Z   & &'+=     b  J r   aO @gƝ  m Gy 4W2     ҋ  %   [email protected]  k D W fEW  $ j >i  ~  1    w  m}     }         5I  x    H *A 8     U 7~°  F }4      DV MZ  望C   'C  - 7   f  

Data decryption : This is data encryption test using openssl php module.