Funciones de OpenSSL
PHP Manual

openssl_pkcs7_encrypt

(PHP 4 >= 4.0.6, PHP 5)

openssl_pkcs7_encryptEncriptar un mensaje S/MIME

Descripción

bool openssl_pkcs7_encrypt ( string $infile , string $outfile , mixed $recipcerts , array $headers [, int $flags = 0 [, int $cipherid = OPENSSL_CIPHER_RC2_40 ]] )

openssl_pkcs7_encrypt() toma el contenido del archivo nombrado por infile y lo encripta usando un cifrado RC2 de 40 bits por lo que sólo lo podrá leer los destinatarios previstos especificados por recipcerts.

Parámetros

infile

outfile

recipcerts

Un único certificado X.509, o una matriz de certificados X.509.

headers

headers es una matriz de cabeceras que serán añadidas delante de la información después de que haya sido encriptada.

headers puede ser una matriz asociativa con las claves como el nombre de la cabecera, o una matriz indexada, donde cada elemento contiene una sola línea de cabecera.

flags

flags se puede usar para especificar las opciones que afectan al proceso de codificación - véase constantes PKCS7.

cipherid

Una de las constants de cipher.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Historial de cambios

Versión Descripción
5.0.0 Se añadió el parámetro cipherid.

Ejemplos

Ejemplo #1 Ejemplo de openssl_pkcs7_encrypt()

<?php
// el mensaje que quiere encriptar y enviar a su agente secreto
// en el campo, conocido como nighthawk. Tiene su certificado
// en el archivo nighthawk.pem
$data = <<<EOD
Nighthawk,

Alto secreto, ¡Confidencial!

¡El enemigo nos está rodeando! ¡Encuéntrese conmigo en el café a las 8.30am
para obtener su pasaporte falso!

C.G.
EOD;

// cargar la clave
$clave file_get_contents("nighthawk.pem");

// guardar el mensaje en un archivo
$fp fopen("mensaje.txt""w");
fwrite($fp$data);
fclose($fp);

// encriptarlo
if (openssl_pkcs7_encrypt("mensaje.txt""enc.txt"$clave,
    array(
"Para" => "[email protected]"// sintaxis asociativa
          
"De: C.G. <[email protected]>"// sintaxis indexada
          
"Tema" => "Confidencial"))) {
    
// mensaje firmado - ¡envíelo!
    
exec(ini_get("ruta_correo") . " < enc.txt");
}
?>


Funciones de OpenSSL
PHP Manual