openssl_pkcs7_encrypt

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

openssl_pkcs7_encryptШифрует сообщение S/MIME

Описание

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

openssl_pkcs7_encrypt() читает сообщение из файла infile, шифрует его с помощью 40-битного RC2 шифра таким образом, что расшифровать его могут только получатели, указанными в recipcerts.

Список параметров

infile

outfile

recipcerts

Массив, либо единичный сертификат X.509.

headers

headers задается массивом заголовков, которые будут добавлены в начало сообщения перед шифрованием.

headers может быть как ассоциативным массивом, где в качестве ключей используются имена заголовков, либо индексированным массивом, содержащим полные строки заголовков.

flags

flags используется для настройки процесса шифрования. См. Константы PKCS7.

cipherid

Одна из констант шифров.

Возвращаемые значения

Возвращает true в случае успешного завершения или false в случае возникновения ошибки.

Примеры

Пример #1 Пример использования openssl_pkcs7_encrypt()

<?php
// Сообщение, которое вы хотите зашифровать и отправить своему секретному
// агенту с позывным Козодой. У вас есть его сертификат в файле nighthawk.pem
$data = <<<EOD
Козодой,

Совершенно секретно! После прочтения сжечь!

Враги приближаются! Связной с новым поддельным паспортом
будет ждать тебя завтра в кафе в 8.30 утра.

Пароль - "У вас ус отклеился!"
Отзыв - "Это не ус, а борода!"

EOD;

// загружаем ключ
$key file_get_contents("nighthawk.pem");

// записываем сообщение в файл
$fp fopen("msg.txt""w");
fwrite($fp$data);
fclose($fp);

// шифруем
if (openssl_pkcs7_encrypt("msg.txt""enc.txt"$key,
    array(
"To" => "nighthawk@example.com"// ассоциативный синтаксис
          
"From: HQ <hq@example.com>"// индексированный синтаксис
          
"Subject" => "СРОЧНО!!! ВАЖНО!!!"))) {
    
// сообщение зашифровано - отправляем!!
    
exec(ini_get("sendmail_path") . " < enc.txt");
}
?>