openssl_seal

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

openssl_seal — 데이터 봉인(암호화)


설명

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

openssl_seal()은 무작위로 생성된 비밀 키와 함께 주어진 cipher_algo를 사용하여 data를 봉인(암호화)합니다. 키는 public_key의 식별자와 연결된 각 공개 키로 암호화되며 암호화된 각 키는 encrypt_keys에 반환됩니다. 이것은 한 사람이 여러 수신자에게 봉인된 데이터를 보낼 수 있음을 의미합니다(한 사람이 공개 키를 얻은 경우). 각 받는 사람은 봉인된 데이터와 받는 사람의 공개 키로 암호화된 봉투 키를 모두 받아야 합니다.


매개변수

data
봉인할 데이터입니다.
sealed_data
봉인된 데이터.
encrypted_keys
암호화된 키의 배열입니다.
public_key
공개 키를 포함하는 OpenSSLAsymmetricKey 인스턴스의 배열입니다.
cipher_algo
암호 메서드.

주의 기본값('RC4')은 안전하지 않은 것으로 간주됩니다. 보안 암호 메서드를 명시적으로 지정하는 것이 좋습니다.

iv
초기화 벡터입니다.

반환 값

성공 시 봉인된 데이터의 길이를 반환하고 오류 시 false를 반환합니다. 성공하면 sealed_data가 sealed_data에 반환되고 envelope 키가 encrypted_keys에 반환됩니다.


변경 로그

버전 설명
8.0.0 public_key는 이제 OpenSSLAsymmetricKey 인스턴스의 배열을 허용합니다. 이전에는 OpenSSL key 유형의 리소스 배열이 허용되었습니다.
8.0.0 cipher_algo는 더 이상 선택적 매개변수가 아닙니다.
8.0.0 iv는 이제 null을 허용합니다.

Examples

예제 #1 openssl_seal() 예제

                  
<?php
// $data is assumed to contain the data to be sealed

// fetch public keys for our recipients, and ready them
$fp = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk1 = openssl_get_publickey($cert);
// Repeat for second recipient
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk2 = openssl_get_publickey($cert);

// seal message, only owners of $pk1 and $pk2 can decrypt $sealed with keys
// $ekeys[0] and $ekeys[1] respectively.
openssl_seal($data, $sealed, $ekeys, array($pk1, $pk2));

// free the keys from memory
openssl_free_key($pk1);
openssl_free_key($pk2);
?>
                  
                

기타