(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
openssl_seal — Sela (criptografa) dados
$data,&$sealed_data,&$encrypted_keys,$public_key,$cipher_algo,&$iv = null
openssl_seal() sela (criptografa) os dados de data usando o
algoritmo de criptografia cipher_algo com uma chave secreta gerada aleatoriamente. A chave é
então criptografada com cada uma das chaves públicas no array public_key,
e cada chave de envelope criptografada é retornada em encrypted_keys. Isso permite
que dados selados sejam enviados a vários destinatários (desde que suas chaves públicas estejam disponíveis). Cada
destinatário deve receber os dados selados e a chave do envelope que foi criptografada com a
chave pública do destinatário. O IV (Vetor de Inicialização) é gerado e seu valor é retornado em
iv.
dataOs dados a serem selados.
sealed_dataOs dados selados.
encrypted_keysArray de chaves criptografadas.
public_keyArray de instâncias de OpenSSLAsymmetricKey contendo chaves públicas.
cipher_algoO método de criptografia.
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 para descriptografia de data. É necessário se
o método de criptografia exigir IV. Isso pode ser descoberto chamando
openssl_cipher_iv_length() com cipher_algo.
O IV não pode ser definido explicitamente. Qualquer valor definido nele é substituído por um valor gerado aleatoriamente.
Retorna o comprimento dos dados selados em caso de sucesso ou false em caso de erro.
Se for bem-sucedido, os dados selados serão retornados em
sealed_data e as chaves do envelope em
encrypted_keys.
| Versão | Descrição |
|---|---|
| 8.0.0 |
public_key agora aceita um array de
instâncias de OpenSSLAsymmetricKey;
anteriormente, um array de resources do tipo OpenSSL key
era aceito.
|
| 8.0.0 |
cipher_algo não é mais um parâmetro opcional.
|
| 8.0.0 |
iv agora pode ser nulo.
|
Exemplo #1 Exemplo de openssl_seal()
<?php
// Presume-se que $data contenha os dados a serem selados
$data = "test";
// busca chaves públicas
$pk1 = openssl_get_publickey("file://cert1.pem");
$pk2 = openssl_get_publickey("file://cert2.pem");
// sela a mensagem, apenas os proprietários de $pk1 e $pk2 podem descriptografar $sealed com as chaves
// $ekeys[0] e $ekeys[1] respectivamente.
if (openssl_seal($data, $sealed, $ekeys, array($pk1, $pk2), 'AES256', $iv) > 0) {
// possivelmente armazena os valores $sealed e $iv e usa mais tarde em openssl_open
echo "sucesso\n";
}
?>