openssl_open

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

openssl_openOpen sealed data

Descrição

openssl_open(
    string $data,
    #[\SensitiveParameter] string &$output,
    string $encrypted_key,
    #[\SensitiveParameter] OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key,
    string $cipher_algo,
    ?string $iv = null
): bool

openssl_open() opens (decrypts) data using an envelope key that is decrypted from encrypted_key using private_key. The decryption is done using cipher_algo and iv. The IV is required only if the cipher method requires it. The function fills output with the decrypted data. The envelope key is usually generated when the data are sealed using a public key that is associated with the private key. See openssl_seal() for more information.

Parâmetros

data

The sealed data.

output

If the call is successful the opened data is returned in this parameter.

encrypted_key

The encrypted symmetric key that can be decrypted using private_key.

private_key

The private key used for decrypting encrypted_key.

cipher_algo

The cipher method used for decryption of data.

Caution

The default value for PHP versions prior to 8.0 is ('RC4') which is considered insecure. It is strongly recommended to explicitly specify a secure cipher method.

iv

The initialization vector used for decryption of data. It is required if the cipher method requires IV. This can be found out by calling openssl_cipher_iv_length() with cipher_algo.

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Registro de Alterações

Versão Descrição
8.0.0 private_key accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type OpenSSL key or OpenSSL X.509 CSR was accepted.
8.0.0 cipher_algo is no longer an optional parameter.

Exemplos

Example #1 openssl_open() example

<?php

// $sealed, $env_key and $iv are assumed to contain the sealed data, our
// envelope key and IV. All given to us by the sealer.

// Fetch private key from file located in private_key.pem
$pkey = openssl_get_privatekey("file://private_key.pem");

// Decrypt the data and store it in $open
if (openssl_open($sealed, $open, $env_key, $pkey, 'AES256', $iv)) {
    echo "Here is the opened data: ", $open;
} else {
    echo "Failed to open data";
}

?>

Veja Também