2013-08-20 37 views
0

我正在使用WAMP 2.4.4。要加密字符串我用「MyEncryption」級,但錯誤是:在PHP中調用未定義函數openssl_public_encrypt()

調用未定義功能openssl_public_encrypt()

有,我必須使用openssl_public_encrypt()前添加任何特殊的庫

class MyEncryption 
{ 

    public $pubkey = '...public key here...'; 
    public $privkey = '...private key here...'; 

    function encrypt($data) 
    { 
     if (openssl_public_encrypt($data, $encrypted, $this->pubkey)) 
      $data = base64_encode($encrypted); 
     else 
      throw new Exception('Unable to encrypt data. Perhaps it is bigger than the key size?'); 

     return $data; 
    } 

} 

$url = new MyEncryption(); 
$d = "Hello World"; 
$enc = $url->encrypt($d); 

echo "Encryption is: ", $enc; 
+0

採取

回答您得到錯誤的web應用程序或命令行? (相關和爲什麼我問:[作曲家警告:缺少openssl擴展名。如何在WAMP中啓用](http://stackoverflow.com/q/14062055/367456)) – hakre

回答

2

有,我必須在使用前openssl_public_encrypt()添加任何特殊的圖書館嗎?

是有,它被稱爲OpenSSL,你會發現它在PHP手冊這裏記載:

根據您的操作系統的味道包被稱爲php-openssl和你所需要做的就是安裝它。然後它應該可以自動在PHP中使用。

這與WAMP UI中的類似,您可以使用它來啓用php_openssl。只有在情況下,你關心你需要做更多的工作命令行,請參閱相關的問題:

+0

你永遠不會猜到什麼擴展名被稱爲。編輯:Aww,編輯前我更喜歡它。 – Sammitch

+0

@Sammitch:好吧:D – hakre

0

有用的信息,您可以使用phpseclib, a pure PHP RSA implementation ,而不是openssl_public_encrypt。例如。

<?php 
include_once('Crypt/RSA.php'); 

$pubkey = file_get_contents('/path/to/public.key'); 

$rsa = new Crypt_RSA(); 
$rsa->loadKey($pubkey); 
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1); 
$ciphertext = $rsa->encrypt('ddd'); 
1

請在WAMP-> PHP-> PHP Extensions中啓用php_openssl擴展。

相關問題