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);
?>
기타
- openssl_open() - 봉인된 데이터 열기