(PHP 4 >= 4.0.6, PHP 5, PHP 7)
openssl_pkcs7_encrypt — Шифрует сообщение S/MIME
$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" => "[email protected]", // ассоциативный синтаксис
"From: HQ <[email protected]>", // индексированный синтаксис
"Subject" => "СРОЧНО!!! ВАЖНО!!!"))) {
// сообщение зашифровано - отправляем!!
exec(ini_get("sendmail_path") . " < enc.txt");
}
?>