函式名稱:openssl_public_encrypt()
函式描述:該函式使用公鑰加密資料。
適用版本:PHP 4 >= 4.0.6, PHP 5, PHP 7
語法:openssl_public_encrypt ( string $data , string &$crypted , mixed $key [, int $padding = OPENSSL_PKCS1_PADDING ] ) : bool
引數:
- $data:要加密的資料,必須是字串型別。
- &$crypted:加密後的資料,將被儲存在該變數中。
- $key:加密所使用的公鑰,可以是由openssl_pkey_get_public()函式返回的公鑰資源或者是PEM格式的公鑰字串。
- $padding:加密時使用的填充方式,預設為OPENSSL_PKCS1_PADDING,可選引數有OPENSSL_NO_PADDING、OPENSSL_PKCS1_PADDING、OPENSSL_SSLV23_PADDING。
返回值:成功時返回true,失敗時返回false。
示例:
// 載入公鑰
$publicKey = openssl_pkey_get_public(file_get_contents('public.pem'));
// 要加密的資料
$data = "Hello, World!";
// 加密資料
if (openssl_public_encrypt($data, $crypted, $publicKey)) {
echo "加密成功!\n";
echo "加密後的資料:\n" . base64_encode($crypted);
} else {
echo "加密失敗!";
}
// 釋放公鑰資源
openssl_free_key($publicKey);
注意事項:
- 在加密前,需要先載入公鑰資源,可以使用openssl_pkey_get_public()函式獲取公鑰資源。
- 加密後的資料通常是不可讀的二進位制資料,可以使用base64_encode()函式將其轉換為可讀的字串。
- 加密成功後,需要釋放公鑰資源,可以使用openssl_free_key()函式釋放公鑰資源。
- 如果加密失敗,可以使用openssl_error_string()函式獲取錯誤資訊。