(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
openssl_open — Öffnet versiegelte Daten
$data
,&$output
,$encrypted_key
,$private_key
,$cipher_algo
,$iv
= null
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.
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.
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.
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.
|
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!";
}
?>