(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
openssl_seal — Scelle des données
$data,&$sealed_data,&$encrypted_keys,$public_key,$cipher_algo,&$iv = null
openssl_seal() scelle (chiffre) les données
data en utilisant la cipher_algo
fournit avec une clé secrète générée aléatoirement. La clé
est chiffrée avec chaque clé publique associée à
public_key et chaque clé ainsi
chiffrée est retournée dans encrypted_keys.
Cela signifie que vous pouvez envoyer des données scellées
à plusieurs destinataires (en supposant que chacun ait reçu la
clé publique). Chaque destinataire doit recevoir les données
chiffrées et la clé d'enveloppe, qui a été
chiffrée avec la clé publique du destinataire.
dataLes données à sceller
sealed_dataLes données scellées.
encrypted_keysTableau des clés chiffrées.
public_keyTableau d'instances OpenSSLAsymmetricKey contenant les clés publiques.
cipher_algoLa méthode de chiffrement.
La valeur par défaut ('RC4') est considéré non-sécurisé.
Il est vivement recommandé de spécifier explicitement une méthode de
chiffrement sûr.
ivLe vecteur d'initialisation.
Retourne la longueur des données
scellées en cas de succès, et false sinon.
En cas de succès, les données scellées sont
placées dans le paramètre sealed_data,
et les clés d'enveloppe dans encrypted_keys.
| Version | Description |
|---|---|
| 8.0.0 |
public_key accepte désormais un tableau
d'instance de OpenSSLAsymmetricKey ;
auparavant, un tableau de ressources de type OpenSSL key
était acceptée.
|
| 8.0.0 |
cipher_algo n'est désormais plus un paramètre optionnel.
|
| 8.0.0 |
iv est désormais nullable.
|
Exemple #1 Exemple avec openssl_seal()
<?php
// On suppose que $data contient les données à sceller
// lecture de la clé publique pour chaque destinataire
$fp = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk1 = openssl_get_publickey($cert);
// pour le deuxième destinataire
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk2 = openssl_get_publickey($cert);
// scelle le message : seuls, les possesseurs de $pk1 et $pk2 peuvent déchiffrer
// le message $sealed avec les clés $ekeys[0] et $ekeys[1] (respectivement).
openssl_seal($data, $sealed, $ekeys, array($pk1, $pk2));
// libère les clés de la mémoire
openssl_free_key($pk1);
openssl_free_key($pk2);
?>