Учебник РНР
Назад Вперёд

openssl_seal

(PHP 4 >= 4.0.4)

openssl_seal - пломбирует (шифрует) данные.

Описание

int openssl_seal (string data, string sealed_data, array env_keys, array pub_key_ids)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Возвращает длину пломбированных данных при успехе, FALSE при ошибке. При успехе возвращаются пломбированные данные в параметре sealed_data , и envelope-ключи - в env_keys .

openssl_seal() пломбирует (шифрует) data с помощью RC4 случайно генерируемым секретным ключом. Этот ключ шифруется с каждым public ключом, ассоциированным с идентификатором в pub_key_ids , и каждый шифрованный ключ возвращается в env_keys . Это значит, что можно пломбировать данные для нескольких принимающих (в предположении, что пломбировщик имеет их public ключи). Каждый принимающий обязан получить пломбированные данные и envelope ключ, который был зашифрован с public ключом принимающего.

Пример 1. openssl_seal()
// принимаем, что $data содержит пломбируемые данные // извлекаем public ключи для наших получателей и читаем их $fp = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r"); $cert = fread($fp, 8192); fclose($fp); $pk1 = openssl_get_publickey($cert); // повторяем для второго получателя $fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r"); $cert = fread($fp, 8192); fclose($fp); $pk2 = openssl_get_publickey($cert); // пломбируем сообщение, только владельцы $pk1 и $pk2 могут дешифровать $sealed ключами // $ekeys[0] и $ekeys[1], соответственно. openssl_seal($data, $sealed, $ekeys, array($pk1,$pk2)); // освобождает ключи из памяти openssl_free_key($pk1); openssl_free_key($pk2);

См. также openssl_open() .


Назад Оглавление Вперёд
openssl_public_encrypt Вверх openssl_sign