PHP - Funzione openssl_public_encrypt ()
Definizione e utilizzo
Il openssl_public_encrypt() la funzione crittograferà i dati con la chiave pubblica.
Descrizione
Utilizzando la funzione openssl_public_encrypt () i dati verranno crittografati e potranno essere decrittati utilizzando openssl_private_decrypt ().
Sintassi
openssl_public_encrypt ( string $data , string &$crypted , mixed $key [, int $padding = OPENSSL_PKCS1_PADDING ] ) : bool
Parametri
Suor n | Parametro | Descrizione |
---|---|---|
1 |
data |
. |
2 |
encrypted |
Avrà i dati crittografati. |
3 |
key |
La chiave pubblica. |
4 |
padding |
Le imbottiture che puoi applicare sono: OPENSSL_PKCS1_PADDING, OPENSSL_SSLV23_PADDING, OPENSSL_PKCS1_OAEP_PADDING, OPENSSL_NO_PADDING. |
Valori restituiti
La funzione openssl_public_encrypt () di PHP restituisce TRUE in caso di successo o FALSE in caso di fallimento.
Versione PHP
Questa funzione funzionerà dalla versione PHP successiva alla 5.0.0.
Esempio 1
Utilizzo di openssl_public_encrypt () per crittografare i dati utilizzando la chiave pubblica:
<?php
// Save Private Key
$privkey = openssl_pkey_new();
openssl_pkey_export_to_file($privkey, 'C:/xampp/htdocs/modules/openssl/privatekey.pem');
//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');
// To encrpt data
$data = 'Welcome To TuorialsPoint';
$isvalid = openssl_public_encrypt ($data, $crypted , file_get_contents('C:/xampp/htdocs/modules/openssl/publickey.pem'),OPENSSL_PKCS1_PADDING);
echo "Data encryption : ".$crypted;
?>
Questo produrrà il seguente risultato:
Data encryption : E wC ݭ +c f* o W 7 E W $ p .rng _N A1 2Uݴ ~s ap۳)w = # g; u _% Z bb & m v& q k
Esempio 2
Per crittografare i dati utilizzando openssl_public_encrypt () e decrittografare utilizzando openssl_private_decrypt ():
<?php
// Save Private Key
$privkey = openssl_pkey_new();
openssl_pkey_export_to_file($privkey, 'C:/xampp/htdocs/modules/openssl/privatekey.pem');
//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');
// To encrpt data
$data = 'Welcome To TuorialsPoint';
$isvalid = openssl_public_encrypt ($data, $crypted , file_get_contents('C:/xampp/htdocs/modules/openssl/publickey.pem'),OPENSSL_PKCS1_PADDING);
echo "Data encryption : ".$crypted;
echo ">br/<>br/<";
if ($isvalid) {
openssl_private_decrypt ($crypted, $decrypted , file_get_contents('C:/xampp/htdocs/modules/openssl/privatekey.pem'),OPENSSL_PKCS1_PADDING);
echo "Data decryption : ".$decrypted;
}
?>
Questo produrrà il seguente risultato:
Data encryption : L _}{ E*? 9[w 7p \ϸI ?ݟ' ݹ n ! ɿ * Xcw Ւ ) / { !j L I*Ï"9eV 9 = Y\ m i䁦 M( 0PJ Ԇ 9 C ` a ݧ b a ? m G$i eU /[ eU \= zLdŌn" :[\ U A ԭ ힲ2 @- " d s =2 nˣ h q5U 浿 9 {ݼ | NE a!
Data decryption : Welcome To TuorialsPoint