簡體   English   中英

openssl_seal問題

[英]openssl_seal problems

我在使用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);
....

對於遇到相同問題的任何人,此問題都與在Windows上安裝xampp有關。 在全新安裝的php上的命令行上運行正常。

除了StuffandBlah的回答外:實際上,它與Apache和Windows中XAMPP中的PHP中不同的OpenSSL版本有關。 這里有一個帖子 ,如何解決這個問題(復制的DLL)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM