我正在使用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;
答案 0 :(得分:2)
使用
openssl_public_encrypt()
之前是否有必须添加的特殊库?
是的,它被称为OpenSSL,您可以在PHP手册中找到它:
根据您的操作系统风格,程序包名为php-openssl
,您需要做的就是安装它。然后它应该在PHP中自动提供。
这与WAMP UI类似,您可以使用它来启用php_openssl。只有在您关注命令行时需要做更多工作,请参阅相关问题:
答案 1 :(得分:1)
请在WAMP中启用php_openssl扩展程序 - > PHP - > PHP扩展。
答案 2 :(得分:0)
PHP文档提供了有关how to make it work on Windows
的有用信息答案 3 :(得分: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');
答案 4 :(得分:-1)
要使用openssl_函数,您必须
a)安装了OpenSSL,并且
b)使用OpenSSL支持构建PHP。
请参阅PHP OpenSSL文档。
的回答