PHP使用OpenSSL加密/解密不适用于我

PHP使用OpenSSL加密/解密不适用于我,php,openssl,Php,Openssl,我尝试使用PHP和OpenSSL使用公钥加密一些数据,然后再次解密 我使用以下代码生成了public.key和private.key: // generate private key $privateKey = openssl_pkey_new(array( 'private_key_bits' => 1024, 'private_key_type' => OPENSSL_KEYTYPE_RSA, )); // write private key to file op

我尝试使用PHP和OpenSSL使用公钥加密一些数据,然后再次解密

我使用以下代码生成了public.key和private.key:

// generate private key
$privateKey = openssl_pkey_new(array(
    'private_key_bits' => 1024,
    'private_key_type' => OPENSSL_KEYTYPE_RSA,
));
// write private key to file
openssl_pkey_export_to_file($privateKey, 'private.key');
// generate public key from private key
$publicKey = openssl_pkey_get_details($privateKey);
// write public key to file
file_put_contents('public.key', $publicKey['key']);
// clear key
openssl_free_key($privateKey);
我的加密和解密代码基本上直接来自PHP文档:

// data to encrypt
$data = "This is a long string or other bit of data that i want to encrypt";

// ==== ENCRYPT ====

// read public key
$publicKey =  file_get_contents("public.key");
$publicKey = openssl_get_publickey($publicKey);

// encrypt data using public key into $sealed
$sealed = '';
openssl_seal($data, $sealed, $ekeys, array($publicKey));
openssl_free_key($publicKey);

// ==== DECRYPT ====

// get private key to decrypt with
$privateKey = file_get_contents("private.key");
$privateKey = openssl_get_privatekey($privateKey);

// decrypt data using private key into $open
$open = '';
openssl_open($sealed, $open, $env_key, $privateKey);
openssl_free_key($privateKey);


// display decrypted data:
echo "<p>Decrypted data: ".$open;
//要加密的数据
$data=“这是我要加密的长字符串或其他数据位”;
//===加密====
//读取公钥
$publicKey=文件获取内容(“public.key”);
$publicKey=openssl\u get\u publicKey($publicKey);
//使用公钥将数据加密到$sealed中
$sealed='';
openssl_seal($data,$sealed,$ekeys,array($publicKey));
openssl免费密钥($publicKey);
//==解密====
//获取用于解密的私钥
$privateKey=文件获取内容(“private.key”);
$privateKey=openssl\u get\u privateKey($privateKey);
//使用私钥将数据解密为$open
$open='';
openssl_open($sealed、$open、$env_key、$privateKey);
openssl免费密钥($privateKey);
//显示解密数据:
echo“解密数据:”.$open;

有人知道它为什么不起作用,或者至少有人知道发生了什么错误吗?

你忘了这句话了吗

$env_key = $ekeys[0];

我通过阅读

的示例代码找到了答案首先,检查所有变量的值,确保它们包含您认为应该包含的内容:)@Jack Cheers是的,我认为一切都是它应该包含的内容。据我所知,它只是拒绝解密数据。我在这里贴了一个例子:是的!信封钥匙,就这样,非常感谢!我希望有更好的关于该函数描述的文档