(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_pkcs7_encrypt — Chiffre un message S/MIME
$input_filename,$output_filename,$certificate,$headers,$flags = 0,$cipher_algo = OPENSSL_CIPHER_AES_128_CBC
   openssl_pkcs7_encrypt() prend le contenu du fichier
   input_filename et le chiffre en utilisant un
   chiffrement RC2 à 40-bit, de manière que le message ne puisse
   être lu que par le possesseur de certificate.
  
input_filename
output_filename
certificateSoit un certificat X.509, soit un tableau de certificats X.509.
headers
       headers est un tableau d'en-têtes qui seront
       ajoutés en tête de message, une fois que les données auront été
       chiffrées.
      
       headers peut être un tableau associatif, dont
       les clés sont les noms d'en-tête, ou bien un tableau indexé dont chaque
       ligne contient un en-tête complet.
      
flags
       flags peut être utilisé pour spécifier
       des options qui affecteront le chiffrement (voir les
       constantes PKCS7).
      
cipher_algoUne des constantes cipher.
   Cette fonction retourne true en cas de succès ou false si une erreur survient.
  
| Version | Description | 
|---|---|
| 8.1.0 | L'algorithme de chiffrement par défaut ( cipher_algo)
       est désormais AES-128-CBC (OPENSSL_CIPHER_AES_128_CBC).
       Auparavant, PKCS7/CMS était utilisé (OPENSSL_CIPHER_RC2_40). | 
| 8.0.0 | certificateaccepte désormais une instance de
       OpenSSLCertificate ;
       auparavant, une ressource de typeOpenSSL X.509 CSRétait acceptée. | 
Exemple #1 Exemple avec openssl_pkcs7_encrypt()
<?php
// le message que vous souhaitez chiffrer et envoyer à votre agent secret
// en mission commandée, appelé "nighthawk". Vous avez son certificat
// dans le fichier "nighthawk.pem"
$data = <<<EOD
Nighthawk,
Top secret, uniquement votre lecture !
L'ennemi approche! Rendez-vous au café à 8 h 30,
pour votre faux passeport.
HQ
EOD;
// Chargement de la clé
$key = file_get_contents("nighthawk.pem");
// Sauvegarde du message dans un fichier
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// Chiffrons-le
if (openssl_pkcs7_encrypt("msg.txt", "enc.txt", $key,
    array("To" => "nighthawk@example.com", // syntaxe sous forme de clé
          "From: HQ <hq@example.com>", // syntaxe sous forme d'indexe
          "Subject" => "Que pour vos yeux !"))) {
    // message chiffré - envoyez-le !
    exec(ini_get("sendmail_path") . " < enc.txt");
}
?>