openssl_seal

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

openssl_sealScelle des données

Description

openssl_seal(
    string$data,
    string&$sealed_data,
    array&$encrypted_keys,
    array$public_key,
    string$cipher_algo,
    string&$iv = null
): int|false

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.

Liste de paramètres

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.

Attention

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.

Valeurs de retour

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.

Historique

VersionDescription
8.0.0public_key accepte désormais un tableau d'instance de OpenSSLAsymmetricKey ; auparavant, un tableau de ressources de type OpenSSL key était acceptée.
8.0.0cipher_algo n'est désormais plus un paramètre optionnel.
8.0.0iv est désormais nullable.

Exemples

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);
?>

Voir aussi

To Top