openssl_pkcs7_encrypt

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

openssl_pkcs7_encryptCriptografa uma mensagem S/MIME

Descrição

openssl_pkcs7_encrypt(
    string $input_filename,
    string $output_filename,
    OpenSSLCertificate|array|string $certificate,
    ?array $headers,
    int $flags = 0,
    int $cipher_algo = OPENSSL_CIPHER_AES_128_CBC
): bool

openssl_pkcs7_encrypt() pega o conteúdo do arquivo chamado input_filename e o criptografa usando uma cifra RC2 de 40 bits para que só possa ser lido pelos destinatários pretendidos especificados pelo certificado especificado em certificate.

Parâmetros

input_filename

output_filename

certificate

Um certificado X.509 único ou um array de certificados X.509.

headers

headers é um array de cabeçalhos que serão anexados aos dados após serem criptografados.

headers pode ser um array associativo codificado pelo nome do cabeçalho ou um array indexado, onde cada elemento contém uma única linha de cabeçalho.

flags

flags pode ser usado ​​para especificar opções que afetam o processo de codificação - veja constantes PKCS7.

cipher_algo

Uma das constantes de método de criptografia.

Valor Retornado

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

Registro de Alterações

Versão Descrição
8.1.0 O algoritmo de criptografia padrão (cipher_algo) agora é AES-128-CBC (OPENSSL_CIPHER_AES_128_CBC). Anteriormente, PKCS7/CMS era usado (OPENSSL_CIPHER_RC2_40).
8.0.0 certificate agora aceita uma instância de OpenSSLCertificate; anteriormente, um resource do tipo OpenSSL X.509 CSR era aceito.

Exemplos

Exemplo #1 Exemplo de openssl_pkcs7_encrypt()

<?php
// a mensagem que você deseja criptografar e enviar ao seu agente
// secreto em campo, conhecido como Falcão Noturno. Você tem o certificado
// dele no arquivo falcão_noturno.pem
$data = <<<EOD
Falcão Noturno,

Segredo absoluto, apenas para seus cuidados!

O inimigo se aproxima! Encontre-me no Café às 8:30 da manhã
para coletar seu passaporte falsificado!

QG
EOD;

// carrega a chave
$key = file_get_contents("falcão_noturno.pem");

// grava mensagem no arquivo
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);

// criptografa a mensagem
if (openssl_pkcs7_encrypt("msg.txt", "crip.txt", $key,
array(
"To" => "falcao_noturno@example.com", // sintaxe de chaves
"From: QG <qg@example.com>", // sintaxe de índice
"Subject" => "Ultra secreto"))) {
// mensagem criptografada - enviar!
exec(ini_get("sendmail_path") . " < crip.txt");
}
?>