openssl_pkcs7_encrypt

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

openssl_pkcs7_encryptChiffre un message S/MIME

Description

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() 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.

Liste de paramètres

input_filename

output_filename

certificate

Soit 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_algo

Une des constantes cipher.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Historique

VersionDescription
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.0certificate accepte désormais une instance de OpenSSLCertificate ; auparavant, une ressource de type OpenSSL X.509 CSR était acceptée.

Exemples

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");
}
?>
To Top