函数名称:openssl_private_encrypt()
适用版本:PHP 4 >= 4.0.6, PHP 5, PHP 7
函数描述:openssl_private_encrypt() 函数使用给定的私钥对数据进行加密。
用法: openssl_private_encrypt ( string $data , string &$encrypted , mixed $private_key [, int $padding = OPENSSL_PKCS1_PADDING ] ) : bool
参数:
- $data: 要加密的数据。
- &$encrypted: 加密后的数据将被存储在此变量中。
- $private_key: 私钥,可以是 PEM 格式的字符串,也可以是之前使用 openssl_pkey_get_private() 函数获取的私钥资源。
- $padding: 可选参数,指定填充模式。默认为 OPENSSL_PKCS1_PADDING。
返回值:如果加密成功,则返回 true,否则返回 false。
示例:
// 定义私钥
$privateKey = <<<EOD
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQC2lLh1Y2y3sZ3yOq1s5X1e7h9eYp8ZnDvBhD4Vvz8W1aK1q7xL
eJ5LrB8FjxKzX8R4bGsti8bY4Jt8ZsJu8D9Ez7HlO5uB5VwT9l2BnJ5n0tWfXaG0
vJ1iUx5+H0KJm9s5hIqk2P2dWu4RwI+3KR4Wc9VC5Y3ejG3yFfA2p2kXbwIDAQAB
AoGAZV2m4lW1p2Zi4B8bXu8K0j9zIe3RfRv3mJzGKsH6Fl4Ld4qAGzR4eG4c7K1z
5g6eK7s6c8Bh9z0u3D5v6u7g8h0d4H6D7f2E3d6f7g8H0j2k5L4j9k8l7k6j5h4p
3o1j7h1j2k3l4k5j6h7g4f3d2s1a2s1d3f5g7h8j9k0l1
-----END RSA PRIVATE KEY-----
EOD;
// 要加密的数据
$data = 'Hello World!';
// 加密数据
if (openssl_private_encrypt($data, $encrypted, $privateKey)) {
echo '加密成功!<br>';
echo '加密后的数据:' . base64_encode($encrypted);
} else {
echo '加密失败!';
}
注意事项:
- 请确保 OpenSSL 扩展已启用。
- 私钥必须是有效的 PEM 格式。
- 加密后的数据通常会以二进制格式返回,可以使用 base64_encode() 函数将其转换为可读的字符串。
- 如果加密失败,可以使用 openssl_error_string() 函数获取错误信息。