PHP - Función openssl_public_decrypt ()

Definición y uso

los openssl_public_decrypt() La función descifrará los datos con la clave pública.

Descripción

El uso de la función openssl_public_decrypt () descifrará los datos que fueron encriptados usando openssl_private_encrypt ().

Sintaxis

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

Parámetros

No Señor Parámetro Descripción
1

data

Los datos cifrados con openssl_private_encrypt ().

2

decrypted

Tendrá los datos que se descifren.

3

key

La clave pública.

4

padding

Los rellenos que puede aplicar son: OPENSSL_PKCS1_PADDING, OPENSSL_NO_PADDING.

Valores devueltos

La función PHP openssl_public_decrypt () devuelve VERDADERO en caso de éxito o FALSO en caso de error.

Versión PHP

Esta función funcionará a partir de la versión PHP superior a 5.0.0.

Ejemplo 1

Para cifrar datos usando openssl_private_encrypt () y descifrar 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;
   }
?>

Esto producirá el siguiente 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

Ejemplo 2

Para cifrar el contenido del archivo usando openssl_private_encrypt () y descifrar 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;
   }
?>

Esto producirá el siguiente 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.