PHP 5.5.16 is released

openssl_pkcs7_decrypt

(PHP 4 >= 4.0.6, PHP 5)

openssl_pkcs7_decryptDéchiffre un message S/MIME

Description

bool openssl_pkcs7_decrypt ( string $infilename , string $outfilename , mixed $recipcert [, mixed $recipkey ] )

Déchiffre le message S/MIME contenu dans le fichier infilename, en utilisant le certificat et la clé privée spécifiés par recipcert et recipkey.

Liste de paramètres

infilename

outfilename

Le message déchiffré est écrit dans le fichier spécifié par ce paramètre.

recipcert

recipkey

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Exemples

Exemple #1 Exemple avec openssl_pkcs7_decrypt()

<?php
// $cert et $key contiennent vos certificats et clés privés
// On suppose aussi que le message vous est destiné
$infilename "encrypted.msg";  // ce fichier contient votre message chiffré
$outfilename "decrypted.msg"// assurez-vous de pouvoir écrire dans ce fichier

if (openssl_pkcs7_decrypt($infilename$outfilename$cert$key)) {
    echo 
"déchiffré !";
} else {
    echo 
"Échec lors du déchiffrement !";
}
?>

add a note add a note

User Contributed Notes 1 note

up
0
oliver at anonsphere dot com
3 years ago
If you want to decrypt a received email, keep in mind that you need the full encrypted message including the mime header.

<?php

// Get the full message
$encrypted = imap_fetchmime($stream, $msg_number, "1", FT_UID);
$encrypted .= imap_fetchbody($stream, $msg_number, "1", FT_UID);

// Write the needed temporary files
$infile = tempnam("", "enc");
file_put_contents($infile, $encrypted);
$outfile = tempnam("", "dec");

// The certification stuff
$public = file_get_contents("/path/to/your/cert.pem");
$private = array(file_get_contents("/path/to/your/cert.pem"), "password");

// Ready? Go!
if(openssl_pkcs7_decrypt($infile, $outfile, $public, $private))
{
   
// Decryption successful
   
echo file_get_contents($outfile);
}
else
{
   
// Decryption failed
   
echo "Oh oh! Decryption failed!";
}

// Remove the temp files
@unlink($infile);
@
unlink($outfile);

?>
To Top