openssl_pkcs7_encrypt
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_pkcs7_encrypt — Verschlüsselt eine S/MIME-Nachricht
Beschreibung
string
$input_filename
,string
$output_filename
,OpenSSLCertificate|array|string
$certificate
,?array
$headers
,int
$flags
= 0,int
$cipher_algo
= OPENSSL_CIPHER_AES_128_CBC
): bool
Die Funktion openssl_pkcs7_encrypt() nimmt den Inhalt
der durch input_filename
angegebenen Datei und
verschlüsselt ihn unter Verwendung eines RC2-40-Bit-Schlüssels. Der Inhalt
kann anschließend nur von den im Parameter
certificate
angegebenen Empfängern gelesen werden.
Parameter-Liste
-
input_filename
-
-
output_filename
-
-
certificate
-
Entweder ein einzelnes X.509-Zertifikat oder ein Array solcher Zertifikate.
-
headers
-
headers
ist ein Array von Headern, die den Daten nach der Verschlüsselung vorangestellt werden.Bei
headers
handelt es sich entweder um ein assoziatives Array mit den Header-Namen als Schlüssel, oder um ein indiziertes Array, bei dem jedes Element eine einzelne Headerzeile enthält. -
flags
-
Mittels
flags
können Optionen angegeben werden, die den Verschlüsselungsprozess beeinflussen. Siehe PKCS7-Konstanten. -
cipher_algo
-
Eine der Verschlüsselungskonstanten.
Rückgabewerte
Gibt bei Erfolg true
zurück. Bei einem Fehler wird false
zurückgegeben.
Changelog
Version | Beschreibung |
---|---|
8.1.0 |
Der Standard-Verschlüsselungsalgorithmus (cipher_algo ) ist jetzt AES-128-CBC (OPENSSL_CIPHER_AES_128_CBC ).
Zuvor wurde PKCS7/CMS (OPENSSL_CIPHER_RC2_40 ) verwendet.
|
8.0.0 |
certificate akzeptiert nun eine
OpenSSLCertificate-Instanz; vorher wurde eine
Ressource vom Typ OpenSSL X.509 CSR akzeptiert.
|
Beispiele
Beispiel #1 openssl_pkcs7_encrypt()-Beispiel
<?php
// die zu verschlüsselnde Nachricht, die Sie Ihrem als "Nighthawk" bekanntem
// Geheimagenten im Einsatz schicken wollen.
// Sein Zertifikat liegt in der Datei nighthawk.pem vor
$data = <<<EOD
Nighthawk,
Streng geheim (For Your Eyes Only)!
Der Feind rückt näher. Treffen Sie mich im Cafè um 0830,
um ihren gefälschten Pass abzuholen.
HQ
EOD;
// Schlüssel laden
$key = file_get_contents("nighthawk.pem");
// Nachricht in Datei speichern
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// Verschlüsseln
if (openssl_pkcs7_encrypt("msg.txt", "enc.txt", $key,
array("To" => "nighthawk@example.com", // keyed syntax
"From: HQ <hq@example.com>", // indexed syntax
"Subject" => "Streng geheim!"))) {
// Nachricht verschlüsselt - abschicken!
exec(ini_get("sendmail_path") . " < enc.txt");
}
?>