函式名稱:openssl_open()
適用版本:PHP 4 >= 4.0.6, PHP 5, PHP 7
函式描述:openssl_open()函式用於使用非對稱加密演算法開啟並解密由openssl_seal()函式加密的資料。
用法: openssl_open ( string $sealed_data , string &$open_data , string $env_key , mixed $priv_key_id [, string $method = "RC4" [, string &$iv = "" ]] ) : bool
引數:
- sealed_data:已加密的資料,由openssl_seal()函式生成。
- open_data:解密後的資料將儲存在此變數中。
- env_key:用於解密資料的環境金鑰。
- priv_key_id:私鑰識別符號,可以是一個字串表示的私鑰檔案的路徑,或者是之前透過openssl_get_privatekey()函式獲取的私鑰資源控制代碼。
- method(可選):解密演算法的名稱。預設為"RC4",也可以使用其他可用的演算法,如"AES-128-CBC"。
- iv(可選):初始化向量(IV),用於加密演算法。預設為空字串。
返回值: 如果解密成功,則返回true,否則返回false。
示例:
<?php
// 加密資料
$plaintext = "Hello, World!";
$keys = openssl_pkey_new();
openssl_seal($plaintext, $sealed_data, $env_keys, array($keys));
// 解密資料
$private_key = openssl_pkey_get_private($keys);
if (openssl_open($sealed_data, $open_data, $env_keys[0], $private_key)) {
echo "解密後的資料:{$open_data}";
} else {
echo "解密失敗";
}
?>
以上示例中,我們首先生成了一對公鑰和私鑰,然後使用openssl_seal()函式對明文資料進行加密。接著,我們使用openssl_open()函式對加密後的資料進行解密,並將解密後的資料儲存在$open_data變數中。最後,我們根據解密的結果輸出相應的資訊。