openssl_open

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

openssl_openÖffnet versiegelte Daten

Beschreibung

openssl_open(
    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.

Achtung

Der 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

VersionBeschreibung
8.0.0private_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);
?>

Siehe auch

To Top