# openssl_open

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

openssl_open — 打开密封的数据

### 说明

openssl_open ( string `$sealed_data` , string `&$open_data` , string `$env_key` , mixed `$priv_key_id` [, string `$method` = "RC4" [, string `&$iv` ]] ) : bool

openssl_open() 使用与密钥标识符`priv_key_id`和信封密钥`env_key`相关联的私钥打开 (解密) `sealed_data` 数据, 使用解密后的数据填充`open_data`。 当数据被密封时，就生成了信封密钥且只能由一个特定的私钥使用。更多信息参见 openssl_seal() 。

### 参数

`sealed_data`

`open_data`

  如果调用成功，则在这个参数中返回打开的数据。

`env_key`

`priv_key_id`

`method`

  加解密算法。

`iv`

  初始化向量。

### 返回值

成功时返回 `TRUE`， 或者在失败时返回 `FALSE`。

### 更新日志

版本 | 说明
--- | ---
7.0.0 | 添加了 `iv` 参数
5.3.0 | 添加了 `method` 参数

### 范例

Example #1 openssl_open() 范例

    <?php
    // $sealed and $env_key are assumed to contain the sealed data
    // and our envelope key, both given to us by the sealer.

    // fetch private key from file and ready it
    $fp = fopen("/src/openssl-0.9.6/demos/sign/key.pem", "r");
    $priv_key = fread($fp, 8192);
    fclose($fp);
    $pkeyid = openssl_get_privatekey($priv_key);

    // decrypt the data and store it in $open
    if (openssl_open($sealed, $open, $env_key, $pkeyid)) {
        echo "here is the opened data: ", $open;
    } else {
        echo "failed to open data";
    }

    // free the private key from memory
    openssl_free_key($pkeyid);
    ?>

### 参见

- openssl_seal() - 密封 (加密) 数据