0

我正在使用 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;
4

5 回答 5

2

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

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

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

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

于 2013-08-20T17:48:19.097 回答
1

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

于 2013-11-21T04:32:33.143 回答
0

You can use phpseclib, a pure PHP RSA implementation, instead of openssl_public_encrypt. eg.

<?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'); 
于 2013-08-20T19:38:42.700 回答
0

PHP 文档提供了有关如何使其在 Windows上运行的有用信息

于 2013-08-20T17:49:05.443 回答
-1

要使用 openssl_ 函数,您必须

a) 安装了 OpenSSL,并且
b) 构建支持 OpenSSL 的 PHP。

请参阅 PHP OpenSSL 文档。

答案来自为什么我不能使用 openssl_encrypt?

于 2016-09-14T07:11:17.587 回答