【问题标题】:Call to undefined function openssl_public_encrypt() in PHP在 PHP 中调用未定义函数 openssl_public_encrypt()
【发布时间】:2013-08-22 21:32:45
【问题描述】:

我正在使用 WAMP 2.4.4。为了加密字符串,我使用了“MyEncryption”类,但错误是:

调用未定义函数 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;

【问题讨论】:

标签: php wamp php-openssl


【解决方案1】:

在使用openssl_public_encrypt()之前我必须添加任何特殊库吗?

是的,它被称为OpenSSL,您可以在此处的 PHP 手册中找到它:

根据您的操作系统风格,该软件包称为php-openssl,您需要做的就是安装它。然后它应该在 PHP 中自动可用。

这与 WAMP UI 中的类似,您也可以使用它来启用 php_openssl。仅当您担心需要做更多工作的命令行时,请参阅相关问题:

【讨论】:

  • 你永远猜不到扩展名是什么。编辑:哇,在编辑之前我更喜欢它。
  • @Sammitch:嗯,是的:D
【解决方案2】:

请在 WAMP -> PHP -> PHP Extensions 中启用 php_openssl 扩展。

【讨论】:

    【解决方案3】:

    PHP 文档提供了有关 how to make it work on Windows 的有用信息

    【讨论】:

      【解决方案4】:

      您可以使用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'); 
      

      【讨论】:

        【解决方案5】:

        要使用 openssl_ 函数,您必须

        a) 已安装 OpenSSL,并且
        b) 使用 OpenSSL 支持构建 PHP。

        请参阅 PHP OpenSSL 文档。

        答案来自Why can't I use openssl_encrypt?

        【讨论】:

          猜你喜欢
          • 2014-05-24
          • 1970-01-01
          • 2015-09-21
          • 2017-07-20
          • 2015-11-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-10
          相关资源
          最近更新 更多