openssl_open

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

openssl_openÖffnet versiegelte Daten

Beschreibung

openssl_open(
    string $data,
    #[\SensitiveParameter] string &$output,
    string $encrypted_key,
    #[\SensitiveParameter] OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key,
    string $cipher_algo,
    ?string $iv = null
): bool

openssl_open() öffnet (entschlüsselt) data mit einem Umschlagschlüssel, der mit private_key aus encrypted_key entschlüsselt wird. Die Entschlüsselung erfolgt mit cipher_algo und iv. Der IV wird nur benötigt, wenn die Verschlüsselungsmethode dies erfordert. Die Funktion füllt output mit den entschlüsselten Daten. Der Umschlagschlüssel wird normalerweise erzeugt, wenn die Daten mit einem öffentlichen Schlüssel versiegelt werden, der mit dem privaten Schlüssel verknüpft ist. Siehe openssl_seal() für weitere Informationen.

Parameter-Liste

data

Die versiegelten Daten.

output

Bei erfolgreicher Ausführung werden die geöffneten Daten in diesem Parameter zurückgegeben.

encrypted_key

Der verschlüsselte symmetrische Schlüssel, der mit private_key entschlüsselt werden kann.

private_key

Der private Schlüssel, der für die Entschlüsselung von encrypted_key verwendet wird.

cipher_algo

Die Verschlüsselungsmethode, die für die Entschlüsselung von data verwendet wird.

Achtung

Der Standardwert für PHP-Versionen vor 8.0 ist 'RC4', was als unsicher gilt. Es wird dringend empfohlen, explizit eine sichere Verschlüsselungsmethode anzugeben.

iv

Der Initialisierungsvektor, der für die Entschlüsselung von data verwendet wird. Er wird benötigt, wenn die Verschlüsselungsmethode einen IV erfordert. Dies kann durch den Aufruf von openssl_cipher_iv_length() mit cipher_algo ermittelt werden.

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 key oder OpenSSL X.509 CSR akzeptiert.
8.0.0 Der Parameter cipher_algo ist nicht mehr optional.

Beispiele

Beispiel #1 openssl_open()-Beispiel

<?php

// Holen des privaten Schlüssels aus der Datei private_key.pem
$pkey = openssl_get_privatekey("file://private_key.pem");

// Entschlüsseln der Daten und speichern in $open
if (openssl_open($sealed, $open, $env_key, $pkey, 'AES256', $iv)) {
echo
"Das sind die geöffneten Daten: ", $open;
} else {
echo
"Öffnen der Daten nicht möglich!";
}

?>

Siehe auch