openssl_open
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
openssl_open — Öffnet versiegelte Daten
Beschreibung
string
$data
,string
&$output
,string
$encrypted_key
,OpenSSLAsymmetricKey|OpenSSLCertificate|array|string
$private_key
,string
$cipher_algo
,?string
$iv
= null
): bool
Die Funktion openssl_open() öffnet (entschlüsselt)
data
unter Verwendung des privaten Schlüssels, der
mit der Schlüsselkennung private_key
und dem
Umschlagschlüssel encrypted_key
verknüpft ist und
füllt output
mit den entschlüsselten Daten. Der
Umschlagschlüssel wird bei der Versiegelung erzeugt und kann ausschließlich
für einen bestimmten privaten Schlüssel verwendet werden. Mehr
Informationen sind der Dokumentation zu openssl_seal()
zu entnehmen.
Parameter-Liste
-
data
-
-
output
-
Bei erfolgreicher Ausführung werden die geöffneten Daten in diesem Parameter zurückgegeben.
-
encrypted_key
-
-
private_key
-
-
cipher_algo
-
Die Verschlüsselungsmethode.
AchtungDer Standardwert (
'RC4'
) wird als unsicher eingestuft. Es wird dringend empfohlen, explizit eine sichere Verschlüsselungsmethode anzugeben. -
iv
-
Der Initialisierungsvektor.
Rückgabewerte
Gibt bei Erfolg true
zurück. Bei einem Fehler wird false
zurückgegeben.
Changelog
Version | Beschreibung |
---|---|
8.0.0 |
private_key akzeptiert nun eine
OpenSSLAsymmetricKey- oder
OpenSSLCertificate-Instanz; vorher wurde eine
Ressource vom Typ OpenSSL-Schlüssel oder
OpenSSL X.509 CSR akzeptiert.
|
8.0.0 |
Der Parameter cipher_algo ist nicht mehr
optional.
|
Beispiele
Beispiel #1 openssl_open()-Beispiel
<?php
// Annahme: $sealed und $env_key enthalten versiegelte Daten bzw. unseren
// Umschlagschlüssel; beide haben wir von dem Versiegelnden erhalten
// privaten Schlüssel aus einer Datei holen und vorbereiten
$fp = fopen("/src/openssl-0.9.6/demos/sign/key.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);
// entschlüsseln der Daten und speichern in $open
if (openssl_open($sealed, $open, $env_key, $pkeyid)) {
echo "Das sind die geöffneten Daten: ", $open;
} else {
echo "Öffnen der Daten nicht möglich!";
}
// löschen des privaten Schlüssels aus dem Speicher
openssl_free_key($pkeyid);
?>