(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
openssl_open — Abre dados lacrados
$data
,&$output
,$encrypted_key
,$private_key
,$cipher_algo
,$iv
= null
openssl_open() abre (descriptografa) os dados do parâmetro data
usando uma chave
de envelope que é descriptografada da chave encrypted_key
usando
a chave privada de private_key
. A descriptografia é feita usando
o método cipher_algo
e o vetor de inicialização iv
. O IV é necessário apenas se o
método de criptografia exigir. A função preenche a variável em output
com os dados
descriptografados. A chave do envelope normalmente é gerada quando os dados são lacrados por meio de uma chave pública
associada à chave privada. Consulte openssl_seal() para obter mais informações.
data
Os dados lacrados.
output
Se a chamada for bem-sucedida, os dados abertos serão retornados neste parâmetro.
encrypted_key
A chave simétrica criptografada que pode ser descriptografada usando private_key
.
private_key
A chave privada usada para descriptografar encrypted_key
.
cipher_algo
O método de criptografia usado para descriptografar data
.
O valor padrão para versões do PHP anteriores a 8.0 é ('RC4'
) que é
considerado inseguro. É altamente recomendável especificar explicitamente um método de criptografia
seguro.
iv
O vetor de inicialização usado para descriptografia de data
. É necessário
se o método de criptografia exigi-lo. Isso pode ser descoberto chamando
openssl_cipher_iv_length() com cipher_algo
.
Versão | Descrição |
---|---|
8.0.0 |
private_key agora aceita uma instância de OpenSSLAsymmetricKey
ou de OpenSSLCertificate;
anteriormente, um resource do tipo OpenSSL key ou OpenSSL X.509 CSR
era aceito.
|
8.0.0 |
cipher_algo não é mais um parâmetro opcional.
|
Exemplo #1 Exemplo de openssl_open()
<?php
// Presume-se que $sealed, $env_key e $iv contenham os dados selados,
// a chave de envelope e IV. Tudo recebido de quem criptografou.
// Busca a chave privada do arquivo localizado em private_key.pem
$pkey = openssl_get_privatekey("file://private_key.pem");
// Descriptografa os dados e os armazena em $open
if (openssl_open($sealed, $open, $env_key, $pkey, 'AES256', $iv)) {
echo "Aqui estão os dados abertos: ", $open;
} else {
echo "Falha ao abrir dados";
}
?>