Php 使用OpenSSL的EC公钥加密

Php 使用OpenSSL的EC公钥加密,php,encryption,openssl,public-key-encryption,public-key,Php,Encryption,Openssl,Public Key Encryption,Public Key,在PHP的OpenSSL实现中,是否有可能使用PHP OpenSSL通过公钥加密/通过私钥解密 根据,openssl_seal()不支持EC公钥 公钥必须是RSA,因为它是唯一的OpenSSL公钥 支持密钥传输的算法 openssl\u public\u encrypt()与EC密钥一起使用时也会引发错误 我的密钥创建工作如下: // Configuration settings for the key $config = array( "private_key_type&qu

在PHP的OpenSSL实现中,是否有可能使用PHP OpenSSL通过公钥加密/通过私钥解密

根据,
openssl_seal()
不支持EC公钥

公钥必须是RSA,因为它是唯一的OpenSSL公钥 支持密钥传输的算法

openssl\u public\u encrypt()
与EC密钥一起使用时也会引发错误

我的密钥创建工作如下:

// Configuration settings for the key
$config = array(
    "private_key_type" => OPENSSL_KEYTYPE_EC,
    "curve_name" => "secp521r1"
);
    
// Create the private and public key
$res = openssl_pkey_new($config);
    
// Extract the private key into $private_key
openssl_pkey_export($res, $private_key);
    
// Extract the public key into $public_key
$public_key = openssl_pkey_get_details($res);
$public_key = $public_key["key"];
有没有办法用OpenSSL进行ec公钥加密


为什么EC的
openssl()
openssl\u public\u encrypt()
失败没有记录在?

根据ECC加密可用:“openssl目前支持的唯一椭圆曲线算法是用于密钥协商的椭圆曲线Diffie-Hellman(ECDH)和椭圆曲线数字签名算法(ECDSA)用于签名/验证。“问题在于加密,而不是签名/验证或密钥交换。那么ECDH是否有PHP实现?加密不是ECDH-ECDH适合混合加密(公钥+私钥交换-此密钥适合AES加密)但是没有纯EC加密。我发现php.net文档从ok到糟糕不等,大多数都很差。我不确定openssl支持什么,也不确定openssl的php绑定支持什么,但椭圆曲线El Gamal可以用于密钥传输。椭圆曲线集成加密方案(ECIES)更好这几乎可以肯定是满足您需求的正确工具。