(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.
data
Les données à sceller
sealed_data
Les données scellées.
encrypted_keys
Tableau des clés chiffrées.
public_key
Tableau d'instances OpenSSLAsymmetricKey contenant les clés publiques.
cipher_algo
La 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.
iv
Le 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);
?>