Php openssl_密封问题

Php openssl_密封问题,php,openssl,Php,Openssl,在PHP中使用openssl_seal函数加载加密的公钥时遇到一些问题 我已经使用openSSL命令行工具创建了公钥和私钥: openssl genrsa -des3 -out private.pem 1024 openssl rsa -in private.pem -out public.pem -outform PEM -pubout 但是,当我在PHP代码中运行它时,会出现以下错误: openssl_seal() [function.openssl-seal]: Don't know

在PHP中使用openssl_seal函数加载加密的公钥时遇到一些问题

我已经使用openSSL命令行工具创建了公钥和私钥:

openssl genrsa -des3 -out private.pem 1024

openssl rsa -in private.pem -out public.pem -outform PEM -pubout
但是,当我在PHP代码中运行它时,会出现以下错误:

openssl_seal() [function.openssl-seal]: Don't know how to get public key from this private key
openssl_seal() [function.openssl-seal]: not a public key (1th member of pubkeys)
当我使用:openssl verify public.pem验证公钥时,我得到:

unable to load certificate
1876:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib
.c:648:Expecting: TRUSTED CERTIFICATE
有人知道为什么会这样吗

PHP代码:

public function encrypt($valueToEncrypt, $publicKeyFile)
{
    $pk = file_get_contents($publicKeyFile);
    $publicKey = openssl_pkey_get_public($pk);

    $encrypted = '';
    $a_envelope = array();
    $a_key = array($publicKey);
    if (openssl_seal($valueToEncrypt, $encrypted, $a_envelope, $a_key) === FALSE)
            {
                while ($msg = openssl_error_string())
                    echo $msg . "<br />\n";
                die('Failed to encrypt data!');
            }
            openssl_free_key($publicKey);
....
public函数加密($valueToEncrypt,$publicKeyFile)
{
$pk=文件内容($publicKeyFile);
$publicKey=openssl\u pkey\u get\u public($pk);
$encrypted='';
$a_信封=数组();
$a_key=数组($publicKey);
if(openssl_seal($valueToEncrypt,$encrypted,$a_信封,$a_密钥)==FALSE)
{
而($msg=openssl\u error\u string())
echo$msg。“
\n”; die('加密数据失败!'); } openssl免费密钥($publicKey); ....
对于遇到相同问题的任何人来说,这个问题与在windows上安装xampp有关。在新安装的php上运行命令行效果很好。

除了StuffandBlah的回答之外:事实上,它与windows上xampp中Apache和php中不同的OpenSSL版本有关。下面是如何解决这个问题的示例lem(复制DLL).

请添加您的PHP代码。如果没有它,很难看出有什么问题。虽然从消息的外观来看,我假设您正在传递一个私钥,而您应该在其中传递一个公钥。添加了代码…检查了文件,这是公钥。还得到以下信息:错误:0906D06C:PEM例程:PEM_read_bio:加载公钥时没有开始行