函数名称: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()函数获取错误信息。