(PHP 4 >= 4.0.6, PHP 5)
openssl_pkcs7_encrypt — Chiffre un message S/MIME
openssl_pkcs7_encrypt() prend le contenu du fichier infilename et le chiffre en utilisant un chiffrement RC2 à 40-bit, de manière à ce que le message ne puisse être lu que par le possesseur de recipcerts.
Soit un certificat X.509, soit un tableau de certificats X.509.
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 peut être utilisé pour spécifier des options qui affecteront le chiffrement (voir les constantes PKCS7).
Le chiffrement peut être sélectionné avec le paramètre cipherid.
Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.
Version | Description |
---|---|
5.0.0 | Ajout du paramètre cipherid. |
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");
}
?>